#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; }
简单的a+b (C语言代码)浏览:1108 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:586 |
程序员的表白 (C语言代码)浏览:1471 |
C语言考试练习题_排列 (C语言代码)浏览:1326 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:946 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:549 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:533 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:529 |
震宇大神的杀毒软件 (C语言代码)浏览:1080 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:470 |