D13. 基础题3n+1跟进阶3n+1(Uva100)
3n+1是很基本的练习题目,题目大致上是输入一个数n,如果为奇数则3n+1,若为偶数则n/2,所以步骤大概是
输入数字判断奇偶若为奇数*3+1,为偶数/2重複第2、3步骤直到数字为1#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结果