う〜ん、最後掛けたのを割って、1足したのを掛けるってのがゴリ押し感満載だけど、オーダは線形分しかないからわりと耐久性があると思われる
public class Cryptography {
long encrypt(int[] numbers) {
//1 ~ 1000だから出来る方法
//例えば、要素の中に0とかがあるとこの方法は無理
//といっても、今回の問題で要素範囲は1~1000だし、かけ算する問題だからあまりそういったケースは無いと思われる。
//負の値でも、1回掛けてもう一回割るだけなのできちんと正しい値に戻る
long multiple = 1;
int min = Integer.MAX_VALUE;
for(int r = 0; r < numbers.length; r++) {
min = Math.min(min, numbers[r]);
multiple *= numbers[r];
}
multiple /= min;
multiple *= (min + 1);
return(multiple);
}
void doIt() {
int[] numbers = {1, 1, 1, 1};
System.out.println(encrypt(numbers));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Cryptography().doIt();
}
}
・・・俺、なんで毎回ソート忘れんだろ(不思議)