D13. 基礎題3n+1跟進階3n+1(Uva100)
3n+1是很基本的練習題目,題目大致上是輸入一個數n,如果為奇數則3n+1,若為偶數則n/2,所以步驟大概是
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
while(n!=1){
if(n%2==1){
n=3*n+1;
printf("%d ",n);
}
else{
n=n/2;
printf("%d ",n);
}
}
printf("\n");
}
return 0;
}
進階題(uva100)
#include<stdio.h>
#include<stdlib.h>
main()
{
int a,x,y,n,i,j,count,max;
while(scanf("%d %d",&i,&j)!=EOF)
{ count=1;max=1;
if(i>j)
{
printf("%d %d ",i,j);
x=i;
i=j;
j=x;
}
else
printf("%d %d ",i,j);
for(a=i;a<=j;a=a+1)
{
n=a;count=1;
while(n!=1){
if(n%2==1)
{
n=n*3+1;
count=count+1; }
else
{
n=n/2;
count=count+1; }}
if(count>max) {max=count;}
}
printf("%d\n",max);
}
return 0;
}
這裡我是先判斷兩數大小然後再用迴圈開始一個一個判斷,最後在看新得到的count有沒有比max大,需不需要取代掉,最後再print結果