本文主要是介绍nyoj-1161-3n+1问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
3n+1问题
时间限制: 1000 ms | 内存限制: 65535 KB
难度: 0
- 描述
-
对于任意大于一的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半,经过若干次这样的变换,一定会使n变为1.求输出变换的次数,注 要求次数要对3取余;例如3->10->5->16->8->4->2->1 变换了7次,对3取余的1; n<=109
- 输入
- 测试数据有多组 输出
- 每次输出占一行 样例输入
-
3 2
样例输出 -
1 1
-
#include<stdio.h> int main() {int n,t;while(scanf("%d",&n)!=EOF){t=0;while(n!=1){if(t>=3) t%=3;if(n&1){n=3*n+1;n>>=1;t+=2;}else{n>>=1;t++;}}printf("%d\n",t%3);}return 0; }
这篇关于nyoj-1161-3n+1问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!