上一篇介紹了Palindromes,上一題講解了如何辨別是不是鏡像字或是迴文字的題目,只要先辨別出鏡像字,接下來再使用StringBuilder內建的反轉把字反轉過來來依序進行判斷就可以了。
今天講解的題目是The 3n + 1 problem
先附上程式碼:
import java.util.;
import static java.lang.System.;
public class main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int a=sc.nextInt(),b=sc.nextInt();
int min=Math.min(a,b);
int max=Math.max(a,b);
int c=0;
for(int i=min;i<=max;i++){
int temp=1;
for(int j=i;j!=1;){
if(j%2==0)j=j/2;
else j=j*3+1;
System.out.println(j);
temp++;
}
if(temp>c)c=temp;
}
System.out.println(a+" "+b+" "+c);
}
}
};
EX:22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1(偶數除二基數=3N+1)
題目要我們給兩個數字,並找出兩個數字範圍內,基數就是N=3N+1,偶數就是N/2,直到最後N變成1就可以換下一個了,並記錄次數,之後把範圍內的每個值都測完,就可以了,之後再輸出執行最多次的次數,利用Math.可以找出一開始輸入的大跟小數字,把他帶入迴圈就可以算出來了,最後輸出要把題目給的值也一起輸出,值則是輸出執行最多次的就可以了,其他可以不用理,
今天的講解就到這裡。
明天也是新的題目,會介紹What's Cryptanalysis? ,繼續加油!