24小时热门版块排行榜    

查看: 1482  |  回复: 4

郑成功1992

木虫 (小有名气)

[求助] 角谷猜想求助~~~

新手求助,角谷猜想:对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
程序要求输入一个整数,将经过处理得到1的过程输出来。

我的程序是:
#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
        unsigned long long int n = 0;
        scanf("%d",&n);
       
        while(n != 1)
        {
                if(n % 2)
                {
                        printf("%u*3+1=%u\n",n,n*3+1);
                        n = n*3+1;
                }
                else
                {
                        printf("%u/2=%u\n",n, n/2);
                        n /= 2;
                }
        }
       
        printf("End";
       
        return 0;
}


输入159487的时候,输出不正确,求大神指点~
输出里面有这一行:
1699000271*3+1=802033518     出错
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

郑成功1992

木虫 (小有名气)

2楼2019-11-27 22:40:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

郑成功1992

木虫 (小有名气)

3楼2019-11-28 13:20:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hux0730

新虫 (初入文坛)

1699000271*3=5097000813=5*10^9,是不是越界了?你选一个更大的数试试,是不是也出错。这个那个瀑布数吗?

发自小木虫Android客户端
4楼2019-12-12 12:01:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sspa9999

至尊木虫 (著名写手)

我猜是%u能够输出的位数有限,unsigned long long 需要用其它格式来输出

发自小木虫Android客户端
5楼2019-12-27 01:25:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 郑成功1992 的主题更新
信息提示
请填处理意见