2386: 【入门】【P5727】冰雹猜想
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:63
解决:24
题目描述
给出一个正整数 ,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 再加 ,否则除以 。经过若干次循环后,最终都会回到 。经过验证很大的数字()都可以按照这样的方式比变成 ,所以被称为“冰雹猜想”。例如当 是 ,变化的过程是 。
根据给定的数字,验证这个猜想,并从最后的 开始,倒序输出整个变化序列。
输入
输入一个正整数 。
输出
输出若干个由空格隔开的正整数,表示从最后的 开始倒序的变化数列。
样例输入 复制
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;
}