dongtian @ 2022-11-13 23:36:15
#include<stdio.h>
int main()
{
int x,y;
scanf("%d",&x);
y=x;
if(x!=1)
{
while(y%2!=0)
{
y=x*3+1;
printf("%d*3+1=%d\n",x,y);
x=y;
}
while(y%2==0)
{
y=x/2;
printf("%d/2=%d\n",x,y);
x=y;
}
}
if(x=1)
printf("End");
return 0;
}
by Luban @ 2022-11-13 23:43:36
如果你的int不够大,可以换成long long类型,%d改为%lld
by Ja50nY0un9_as_AgNO3 @ 2022-11-14 00:35:26
@dongtian 您的问题在于第7行的if应是while。
不然很快就会结束程序。
by Ja50nY0un9_as_AgNO3 @ 2022-11-14 00:36:19
@Light_Of_Wisdom 这题int是能过的。
by Luban @ 2022-11-14 00:37:37
@Ja50nY0un9 草,人傻了,我以为楼主问的是那啥问题)))
那说明数据造的不错?冰雹猜想不是会出现数字激增吗(((,润了
by Ja50nY0un9_as_AgNO3 @ 2022-11-14 00:40:40
@Light_Of_Wisdom 是会激增,但是不至于从2e6激增到2e9。
而且我觉得出题人也没想卡这个东西。
by Ja50nY0un9_as_AgNO3 @ 2022-11-14 00:50:02
刚才亲测,2621439可以爆破int上限,然而超出了数据范围(悲
by dongtian @ 2022-11-14 21:34:32
@Ja50nY0un9 大神666!!!我以为是int不够储存,不过if为什么提前结束啊??
by Ja50nY0un9_as_AgNO3 @ 2022-11-14 21:37:56
@dongtian 因为if里面的东西只执行一次,然而可能有多次奇偶切换,然后您就寄了。
Tips:这玩意连x=3 都过不了。
by dongtian @ 2022-11-14 21:55:37
@Ja50nY0un9 谢谢!!虽然现在还是不懂,但是以后应该可以理解。
by A_Learning_Hornet @ 2023-02-26 13:38:49
不开long long见珂珂!