卡拉茲(Callatz)猜想:
對任何一個正整數\(n\),如果它是偶數,那么把它砍掉一半;如果它是奇數,那么把\((3n+1)\)砍掉一半,這樣一直反復砍下去,最后一定在某一步得到\(n=1\),卡拉茲在\(1950\)年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題,結果鬧得學生們無心學業,一心只證\((3n+1)\),以至于有人說這是一個陰謀,卡拉茲是在蓄意延緩美國數學界教學與科研的進展……
我們今天的題目不是證明卡拉茲猜想,而是對給定的任一不超過\(1000\)的正整數\(n\),簡單地數一下,需要多少步(砍幾下)才能得到\(n=1\)?
輸入格式:
每個測驗輸入包含\(1\)個測驗用例,即給出正整數\(n\)的值,
輸出格式:
輸出從\(n\)計算到\(1\)需要的步數,
輸入樣例:
3
輸出樣例:
5
簡單水題(C++)
#include <iostream>
using namespace std;
int main() {
int n,count=0;
cin>>n;
while(n!=1) {
if(n%2!=0) n=3*n+1;
n=n/2;
count++;
}
cout<<count;
return 0;
}
其他寫法(C++)
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
gg ni, ans = 0;
cin >> ni;
for (; ni != 1; ++ans) {
if (ni % 2 == 1) {
ni = 3 * ni + 1;
}
ni /= 2;
}
cout << ans;
return 0;
}
本文來自博客園,作者:JIeJaitt,轉載請注明原文鏈接:https://www.cnblogs.com/JIeJaitt/p/15468715.html
任何問題可以通過下面的聯系方式聯系我
498938874(推薦)
783366163
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/343029.html
標籤:其他
上一篇:AcWing 第23場周賽
下一篇:2021 CCPC女生賽
