xxx定律-poj-3782
xxx定律
Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1639????Accepted Submission(s): 1303
Problem Description
對于一個數(shù)n,如果是偶數(shù),就把n砍掉一半;如果是奇數(shù),把n變成 3*n+ 1后砍掉一半,直到該數(shù)變?yōu)?為止。
請計算需要經(jīng)過幾步才能將n變到1,具體可見樣例。
?
?
Input
測試包含多個用例,每個用例包含一個整數(shù)n,當(dāng)n為0 時表示輸入結(jié)束。(1<=n<=10000)
?
?
Output
對于每組測試用例請輸出一個數(shù),表示需要經(jīng)過的步數(shù),每組輸出占一行。
?
?
Sample Input
3
1
0
?
?
Sample Output
5
0
?
?
Source
浙大計算機(jī)研究生復(fù)試上機(jī)考試-2009年
?
解題思路:
1、? 判斷奇偶,按題目要求進(jìn)行計算即可。
?
程序代碼:
#include<stdio.h>
int main()
{
??? int n,m,k;
??? while(scanf("%d",&n)&&n!=0)
??? {
??? k=0;
???? while(n!=1)??????????? // 只要不等于 1? 就繼續(xù)執(zhí)行循環(huán)體
????? {
???????? if(n&1)???????? // 1的二進(jìn)制? 是 0001?? 所以與 1 按位與之后 若為0 則n 為偶數(shù),若不為0 則n 為奇數(shù)。
????????? {
?????????? n=3*n+1;??
?????????? n>>=1;???????????? // 向有移移位 相當(dāng)于 除以 2.
?????????? }
?????????? else
??????????? n>>=1;
?????????? k++;?
????? }
????? printf("%d\n",k);
??? }
??? return 0;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhouhongweihpu/p/3230127.html
總結(jié)
以上是生活随笔為你收集整理的xxx定律-poj-3782的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Repeater嵌套绑定Repeater
 - 下一篇: 转仁兄:Binary search an