问题标题: 角谷猜想哪里错了

0
0
已解决
被禁言 鲍纪元
鲍纪元
高级守护
高级守护
#include<bits/stdc++.h>
using namespace std;
int main()
{ 
    int n,a=0;
    cin>>n;
    int i=n;
    do
    {   
    a++;
        if(i%2==0)
            {
                i/=2;
            }
        if(i%2!=0)
        {
                i*=3;
                i+=1;
            }
        }
            while(i!=1);
            cout<<a;
    return 0;
} 

呵呵呵,啥幌子都不出,各位DALAO忙一帮小弟,行行好吧!必有重谢!!@#¥%……%¥#¥#@#¥%%%


0
已采纳
于子轩
于子轩
初级守护
初级守护

第一,

#include<bits/stdc++.h>

这个在酷町堂的测试系统里好像过不去。。。

p.s.用iostream就行。

第二,

do
    {   
    a++;
        if(i%2==0)
            {
                i/=2;
            }
        if(i%2!=0)
        {
                i*=3;
                i+=1;
            }
        }
            while(i!=1);

建议改为

while(i!=1)
    {   
        a++;
        if(i%2!=0)
        {
             i*=3;
             i+=1;
        }
        else if(i%2==0)
        {
             i*=2;
        }
    }

再输出步数a。

1
贾文卓
贾文卓
高级光能
高级光能

首先,建议把do-while循环改为while循环,要不然输入一个1就崩了。

还有,要在第15行的前面加上else,要不然如果第13行的i/=2运行完了后i变成奇数了也会导致错误。

最后有几个小细节:

1.代码缩进最好做好看一点。

2.不要使用万能头文件!

0
我要回答