各位大佬,求助

B2077 角谷猜想

zhangyao2010 @ 2024-01-29 15:47:34

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n;
    int j=n;
    int i=1;
    while(i<=j){

        if (j%2==0){
            m=j/2;
            cout <<j<<"/2="<<m<<endl;
            j=m;
        }
        if (j%2!=0){
            j=j*3+1;
            cout<<n<<"*3+1="<<j<<endl; 
        }       
        i++;
    }
    cout <<j<<"/2=1"<<endl;
    cout <<"End"<<endl;
    return 0;
} 

by 001_zip @ 2024-01-29 15:54:35

有必要吗?


by 001_zip @ 2024-01-29 15:55:23

我习惯用for


by penguin_is_cool @ 2024-01-29 15:56:27

@zhangyao2010 十年OI一场空,不开 long long 见祖宗


by luoyukai @ 2024-01-29 15:59:21

特判 i=1 的情况


by liuyilan @ 2024-01-31 13:13:06

@zhangyao2010

1.要开long long型 2.其次如果输入为1,那么直接就可以 End

修改方法

1.让n直接带入运算,可以节省时间与内存 2.把除n以外全部变量删除(包括定义与参与计算部分),直接用n带入循环即可

3.把循环条件改为n!=1

4.把循环外最后输出j的那一部分删除就可以了

试试看


|