2386: 【入门】【P5727】冰雹猜想
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:57
解决:22
题目描述
给出一个正整数 ,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 再加 ,否则除以 。经过若干次循环后,最终都会回到 。经过验证很大的数字()都可以按照这样的方式比变成 ,所以被称为“冰雹猜想”。例如当 是 ,变化的过程是 。
根据给定的数字,验证这个猜想,并从最后的 开始,倒序输出整个变化序列。
输入
输入一个正整数 。
输出
输出若干个由空格隔开的正整数,表示从最后的 开始倒序的变化数列。
样例输入 复制
20
样例输出 复制
1 2 4 8 16 5 10 20
提示
数据保证,。
#include<bits/stdc++.h> using namespace std; #define MAXN 205 //这是宏定义或者使用常量:const int MAXN=205; (注意常量最后有分号,而宏定义没有) int main(){ int n,num=0,a[MAXN]; cin>>n; while (n!=1) { a[num]=n; num++; //此两行可以替代成 a[num++]=n; if (n%2==0) n/=2; else n=3*n+1; } a[num]=1; //将最后的1加入数组 for (int i=num;i>=0;i--) //倒序输出 cout<<a[i]<<' '; return 0; }