本文共 574 字,大约阅读时间需要 1 分钟。
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。
对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1? 输入格式: 每个测试输入包含 1 个测试用例,即给出正整数 n 的值。 输出格式: 输出从 n 计算到 1 需要的步数。 解:#includeusing namespace std;int getNum(){ int a=0; cin>>a; return a;} int count(int a){ int i=0; while(a!=1){ if(a%2){ a=(3*a+1)/2; } else{ a=a/2; } i++; } return i;}int main(){ int a,i; a=getNum(); i=count(a); cout< <
VS运行结果:输入7,需要11次。
转载地址:http://slvpz.baihongyu.com/