luozezhong @ 2024-03-31 10:46:33
//会TLE
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(bool b=n!=1;b=n!=1;){
if(n%2)cout<<n<<"*3+1="<<n*3+1<<endl,n*=3,n++;
else cout<<n<<"/2="<<n/2<<endl,n/=2;
if(n==1)b=0;
}
cout<<"End";
return 0;
}
//AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;//注意
cin>>n;
for(bool b=n!=1;b=n!=1;){
if(n%2)cout<<n<<"*3+1="<<n*3+1<<endl,n*=3,n++;
else cout<<n<<"/2="<<n/2<<endl,n/=2;
if(n==1)b=0;
}
cout<<"End";
return 0;
}
至于为什么,咱也不知道,咱也不敢问
by __little__Cabbage__ @ 2024-03-31 10:48:03
超范围了
by Zskioaert1106 @ 2024-04-07 19:41:20
可能是因为溢出之后不是1就一直循环,所以就TLE。
by Jimmy_Cudo @ 2024-04-25 20:11:43
想多了,自己在LINUX G++ 的环境下一试就会发先,哎?没爆,所以......(不明所以)
by Star_Sky_ @ 2024-05-21 15:29:16
@luozezhong 因为int在爆掉之后会变成负数,所以有可能死循环……
by Star_Sky_ @ 2024-05-21 15:30:37
@luozezhong 出题人应该是找了一个数,在爆了int之后会出现一个死循环