題目描述
迴圈數是那些不包括0這個數字的沒有重複數字的整數 (比如說, 81362) 並且同時具有乙個有趣的性質, 就像這個例子:
如果你從最左邊的數字開始 ( 在這個例子中是8) 數最左邊這個數字個數字到右邊(回到最左邊如果數到了最右邊),你會停止在另乙個新的數字(如果沒有停在乙個不同的數字上,這個數就不是迴圈數). 就像: 8 1 3 6 2 從最左邊接下去數8個數字: 1 3 6 2 8 1 3 6 所以下乙個數字是6.
重複這樣做 (這次從「6」開始數6個數字) 並且你會停止在乙個新的數字上: 2 8 1 3 6 2, 也就是2.
再這樣做 (這次數兩個): 8 1
再一次 (這次乙個): 3
又一次: 6 2 8 這是你回到了起點, 在從每乙個數字開始數1次之後. 如果你在從每乙個數字開始數一次以後沒有回到起點, 你的數字不是乙個迴圈數。
給你乙個數字 m (在1到9位之間), 找出第乙個比 m大的迴圈數, 並且一定能用乙個無符號長整形數裝下
輸入僅僅一行, 包括m
輸出僅僅一行,包括第乙個比m大的迴圈數
樣例輸入
81361
樣例輸出
81362
題意描述,輸入乙個數,找到比這個數大的迴圈數輸出;
滿足上述3個要求的即為迴圈數;
解題思路:先把含有0和重複數字的數字剪掉,再判斷是否為迴圈數,判斷時用死迴圈,每個數字經過一次後標記一下,如果再次經過則表示不是迴圈數,只有每個數字都經過一次,再回到一,才可以通過成為迴圈數;
ac**:
#include#include#includeint main()
m=x;
s=k=(int)log10(m);
while(m!=0)
c[m%10]=1;
m/=10;
}if(find==1)
continue;
i=0;t=1;
while(1)
else if(b[i]==1)
else
}if(find==1)
continue;
else if(find==2)
}} return 0;
}
基礎演算法 模擬 細節
1337 翻轉遊戲 例如 遊戲有兩關一共4盞燈,第一關levs為 第二關為 你需要5步完成這個遊戲,因為燈初始狀態為 5個步驟依次是 check,check。輸入多組測試資料,第一行乙個整數t,表示資料個數,其中1 t 10 之後有t組相同結構的資料 每組資料第一行包含兩個整數n,m,其中1 n,m...
goto模擬迴圈
0為false 1為true for的彙編 for int i 0 i 5 i 00401048 mov dword ptr ebp 4 0 dword ptr 表示i為整型,ebp 4偏移到變數i 0040104f jmp forgoto 2ah 0040105a goto偏移2a位到004010...
迴圈的一些細節
1 迴圈執行次數相同,大迴圈放在外面還是小迴圈放在外層效率高呢?int end1 10 int end2 100 int end3 1000000 long starttime system.nanotime 開始時間 for int i 1 i end3 i long endtime system...