洛谷刷题C++语言 | P5727 冰雹猜想

学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客


【题目描述】

给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字(7×10^11)都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 n 是 20,变化的过程是 20→10→5→16→8→4→2→1。

根据给定的数字,验证这个猜想,并从最后的 1 开始,倒序输出整个变化序列。

【输入】

输入一个正整数 n

【输出】

输出若干个由空格隔开的正整数,表示从最后的 1 开始倒序的变化数列。

【输入样例】

20

【输出样例】

1 2 4 8 16 5 10 20

【代码详解】

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n, a[5000], mark=1;
    cin >> n;
    a[mark] = n;
    mark++;
    while (n!=1) {
        if (n%2==0) n /= 2;
        else n = n * 3 + 1;
        a[mark] = n;
        mark++;
    }
    for (int i=mark-1; i>=1; i--) {
        cout << a[i] << " ";
    }
    return 0;
}

【运行结果】

20
1 2 4 8 16 5 10 20

猜你喜欢

转载自blog.csdn.net/guolianggsta/article/details/132645902
今日推荐