#include <stdio.h> int main(void) { int i, j, k, max, n, len, t; while (scanf("%d%d", &i, &j) == 2) { printf("%d %d ", i, j); if (i > j) { t = i; i = j; j = t; } max = 0; for (k = i; k <= j; k++) { n = k; len = 1; while (n != 1) { if (n % 2 == 0) n /= 2; else n = n * 3 + 1; len++; } if (len>max) max = len; } printf("%d\n", max); } return 0; }
0.0分
2 人评分
为什么要把k赋值给n????
为什么答案错误33% #include<stdio.h> int k = 1; int f(int n) { while(n != 1) { if(n % 2 == 0){ n /= 2; k++; return f(n); } else{ n = n * 3 + 1; k++; return f(n); } } } int main() { int n, i, j, max; while(scanf("%d%d", &i, &j) != EOF){ max = 0; //每组数据初始最大周期长度都为0 for(n = i; n <= j; n++){ k = 1; //每个数据 初始周期长度都为1 f(n); if(k > max) max = k; } printf("%d %d %.lf\n", i, j, max); } return 0; }
#include<stdio.h> #include<stdlib.h> int f(int n); int main() { int m,n,i,j,k,*a,t; while(scanf("%d%d",&m,&n)==2 ){ a=(int*)malloc((n-m+2)*sizeof(int)); for(i=m,j=0;i<=n;i++) a[j++]=f(i); for(i=0;i<n-m;i++){ k=i; for(j=i+1;j<n-m+1;j++) if(a[k]<a[j]) k=j; if(k!=i){ t=a[i];a[i]=a[k];a[k]=t; } } printf("%d %d %d\n",m,n,a[0]); free(a); } return 0; } int f(int n) { int count=1; while(n!=1){ if(n%2==0) n/=2; else n=n*3+1; count++; } return count; }
Tom数 (C++代码)浏览:868 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:436 |
哥德巴赫曾猜测 (C语言代码)浏览:1147 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:387 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:509 |
WU-复数求和 (C++代码)浏览:2119 |
DNA (C语言描述,数据结构)浏览:909 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:536 |
1035 题解浏览:875 |
A+B for Input-Output Practice (I) (C语言代码)浏览:451 |