题解:P5727 【深基5.例3】冰雹猜想

· · 题解

思路

这题我们只需要按照题目的操作来,如果 n 是偶数,那么让他除以二,否则乘 31,在执行每一步操作的同时,我们用一个数组来存每次变化的值,最后倒序输出就可以了。注意!最后还要输出 n 本身!(如果 n=1 的情况没有这个就错了)。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int x,m;
int a[100005];
signed main(){
    int n;
    cin>>n;
    m=n;
    while(n>1){
        if(n%2==0){
            n=n/2;
            a[x]=n;
        }
        else{
            n=n*3+1;
            a[x]=n;
        }
        x++;
    }
    for(int i=x-1;i>=0;i--){
        cout<<a[i]<<" ";
    }
    cout<<m;
    return 0;}