zzy20131010 @ 2024-02-18 12:20:15
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==1)
{
cout<<"End";
return 0;
}
else
{
for(int i=1;n!=1;i++)
{
if(n%2==0)
{
cout<<n<<"/2="<<n/2;
n=n/2;
}
else
{
cout<<n<<"*3+1="<<n*3+1;
}
}
cout<<"End";
}
}
by OIer_bcx_ @ 2024-02-18 12:38:27
else
{
cout<<n<<"*3+1="<<n*3+1;
n=n*3+1;
}
by MspAInt @ 2024-02-18 12:40:39
@zzy20131010
这里有三个问题:
cout<<n<<"*3+1="<<n*3+1;
中你仅仅输出了 n*3+1
而没有更新 n
。n
在计算时可能超过 int
表达范围,因此使用 long long
类型。改正以上三个错误可以通过:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
cin>>n;
if(n==1)
{
cout<<"End";
return 0;
}
else
{
for(int i=1;n!=1;i++)
{
if(n%2==0)
{
cout<<n<<"/2="<<n/2<<'\n';
n=n/2;
}
else
{
cout<<n<<"*3+1="<<n*3+1<<'\n';
n=n*3+1;
}
}
cout<<"End";
}
}
by lf004 @ 2024-02-20 10:51:40
for循环里的else中输出完要更新n