time limit: 1 sec memory limit: 64 mb 64bit io format: %lld
submitted: 4541 accepted: 1235
[submit][status][web board]
任給乙個正整數n,如果n為偶數,就將它變為n/2,如果為奇數,則將它乘3加1(即3n+1)。不斷重複這樣的運算,經過有限步後,一定可以得到1 。
輸入1個正整數n(n <= 10^10)(多組資料)
輸出變化的次數(每組資料一行)
3
7
使用 while 迴圈
使用 while 語句在條件成立時重複某動作,類似於 if 語句,只要條件為 true
就重複動作。
while 迴圈計算乙個表示式的值,如果表示式為
true,則會執行迴圈體中的**。如果條件計算結果為 true,在迴圈返回以再次計算條件前執行一條語句或一系列語句。條件計算結果為 false
後,則跳過語句或一系列語句並結束迴圈。在不確定要將乙個**塊迴圈多少次時,使用 while 迴圈可能會非常有用。
例如,下面的**將數字顯示到"輸出"面板中:
var
i:number = 0;
while (i < 5)
您會看到以下數字顯示到"輸出"面板中:
0 1
2 3
4 使用 while 迴圈而非 for 迴圈的乙個缺點是,在 while
迴圈中更有可能編寫出無限迴圈。如果遺漏遞增計數器變數的表示式,則 for 迴圈示例**將無法編譯;而 while 迴圈示例**將能夠編譯。若沒有遞增 i
的表示式,迴圈將成為無限迴圈。
零起點學演算法
1 #include2intmain()
10else13}
14 printf("
%lld\n
",cout);15}
16return0;
17 }
此題有陷阱。 首先n的範圍是10的10次冪。
unsigned int 0~4294967295
int 2147483648~2147483647
unsigned long 0~4294967295
long 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
數值太大 用long long 輸入 lld輸出
1129 零起點學演算法36 3n 1問題
任給乙個正整數n,如果n為偶數,就將它變為n 2,如果為奇數,則將它乘3加1 即3n 1 不斷重複這樣的運算,經過有限步後,一定可以得到1 input 輸入1個正整數n n 10 10 多組資料 output 輸出變化的次數 每組資料一行 sample input 3sample output 7 ...
零起點學演算法68 刪除字元
include include include int main printf n memset str,0,sizeof str getchar 不寫會出錯 return 0 這是乙個非常水的題,主要想講一下gets 讀取的換行符會被轉化成 0 來結束字串的讀入。但是gets之後,再次讀取乙個字元...
零起點學演算法104 第幾天?
time limit 1 sec memory limit 128 mb 64bit io format lld 給定乙個日期,輸出這個日期是該年的第幾天。輸入資料有多組,每組佔一行,資料格式為yyyy mm dd組成,具體參見sample input 另外,可以向你確保所有的輸入資料是合法的。對於...