2 条题解

  • 0
    @ 2024-11-19 9:15:29
    #include<stdio.h>
    #define N 120
    int n, a[N];
    
    int main() {
    	scanf("%d", &n);
    	int t = n, p =0;
    	while(t!=1) {
    		a[++p] = t; // [1, p]
    		if(t %2 ==0) t = t/2;
    		else t = t*3+1;
    	}
    	a[++p] = t;
    
    	for(int i=1; i<=p; i++)
    		printf("%d ", a[p+1-i]);
    	printf("\n");
    	return 0;
    }
    // 理解数组范围 120 是怎么来的 
    int main1() {
    //	scanf("%d", &n);
    	for(int i=1; i<=100; i++) {
    		n = i;
    		int t = n, p =0;
    		while(t!=1) {
    			a[++p] = t; // [1, p]
    			if(t %2 ==0) t = t/2;
    			else t = t*3+1;
    		}
    		a[++p] = t;
    		printf("%d %d\n",i, p);
    	}
    
    //	for(int i=1; i<=p; i++)
    //		printf("%d ", a[p+1-i]);
    //	printf("\n");
    	return 0;
    }
    
    • 0
      @ 2023-11-28 20:07:50
      #include<stdio.h>
      const int N=1e6+10;
      int n,a[N];
      int main() {
      	scanf("%d",&n);
      	int p=0;
      	while(n!=1) {
      		a[++p]=n;/*先让指针p自增1,然后将其指向
      		数组a中的第p+1个元素,并将该元素赋值为n*/
      		if(n%2!=0) n=3*n+1;//若为奇数则乘3加1,否则除以2 
      		else n=n/2;
      	}
      	a[++p]=n;
      	for(int i=p; i>=1; i--) {
      		printf("%d ",a[i]);
      	}
      	return 0;
      }
      
      • 1

      信息

      ID
      103
      时间
      1000ms
      内存
      512MiB
      难度
      5
      标签
      递交数
      189
      已通过
      72
      上传者