3n+1问题
2017-02-28 13:40
183 查看
问题描述:
对于任意大于1的自然数n,若n为奇数,则n=3*n+1,否则n=n/2。经过若干次变换,则n一定会变会1
例如:6->3->10-> 5-> 16-> 8-> 4-> 2-> 1
要求:
输入n,输出的变换次数,n<=10^9;
说明:
int范围为: -2147483628 -2147483647 即2*31 ~ 2*31-1
long long范围为2^63 ~ 2^63-1唯一的区别就是将%d改为%lld但有些地方需要写成%I64d
这dev中,这两种写法都可以。
#include<stdio.h>
int main()
{
long long n;
//int n; long long n2=n;
int count=0;//循环次数
scanf("%I64d",&n);
while(n>1)
{
if(n%2==0)
n=n/2;
else
n=3*n+1;
count++;
//printf("%d %d\n",n,count);
}
printf("%d\n",count);
return 0;
}
对于任意大于1的自然数n,若n为奇数,则n=3*n+1,否则n=n/2。经过若干次变换,则n一定会变会1
例如:6->3->10-> 5-> 16-> 8-> 4-> 2-> 1
要求:
输入n,输出的变换次数,n<=10^9;
说明:
int范围为: -2147483628 -2147483647 即2*31 ~ 2*31-1
long long范围为2^63 ~ 2^63-1唯一的区别就是将%d改为%lld但有些地方需要写成%I64d
这dev中,这两种写法都可以。
#include<stdio.h>
int main()
{
long long n;
//int n; long long n2=n;
int count=0;//循环次数
scanf("%I64d",&n);
while(n>1)
{
if(n%2==0)
n=n/2;
else
n=3*n+1;
count++;
//printf("%d %d\n",n,count);
}
printf("%d\n",count);
return 0;
}
相关文章推荐
- UVA-694-限制性的3n+1问题
- 3n+1 数链问题
- 关于3n+1问题的验证
- 1.6.1 3n+1问题 The 3n+1 problem
- 3n+1问题递归和非递归实现...
- 关于c语言中如何解决3n+1,溢出有关问题
- UVA 100 - The 3n+1 problem (3n+1 问题)
- 第一章:3n+1问题题解
- 3n+1 数链问题(数论)
- 递归的简单例子 3n+1问题
- POJ——1207(3N+1 问题)
- 挑战编程 程序设计竞赛训练手册-1.6.1 3n+1问题(3n+1 Problem)
- wikioi p3038 3n+1问题
- 3n+1问题
- 关于3n+1问题的计算效率
- UVa Problem 100 The 3n+1 problem (3n+1 问题)
- 3n+1问题
- UVA 100 - The 3n+1 problem (3n+1 问题)
- 入门笔记上面的3n+1问题的思考
- C语言每日小练(一)——3n+1问题