正整數k的倒數1/k,寫為10進製的小數如果為無限迴圈小數,則存在乙個迴圈節,求<=n的數中,倒數迴圈節長度最長的那個數,假如存在多個最優的答案,輸出所有答案中最大的那個數。
1/6= 0.1(6) 迴圈節長度為1
1/7= 0.(142857) 迴圈節長度為6
1/9= 0.(1) 迴圈節長度為1
輸入輸入n(10 <= n <= 1000)
輸出輸出<=n的數中倒數迴圈節長度最長的那個數
輸入樣例
10輸出樣例
7迴圈小數的研究
總結:1:當分母為2或5或兩者皆有的倍數時,一定是有限小數,設其為2的a倍,5的b倍。其位數為max(a,b)
2:當分母c與10互素,為純迴圈小數,迴圈長度<=c-1,與分子無關
3:當分母因子既有與10互素又有2或5或10的因子,為混迴圈小數
4:將分母除完2和5後c如果不等於1
10^k%c==b b為迴圈小數的第乙個數,特別的當b ==1時的最小正整數k為迴圈小數的長度
例:1/7: 142857
10^1%7 ==1
2/7:285714
10^2%7 ==2
3/7: 428571
10^3%7 == 4
4/7: 571428
10^4%7 == 5
5/7: 714285
10^5%7 == 7
6/7:857142
10^6%7 == 8
5:把偶數字的迴圈節一分為二,前後位數相加,每位上的數都為9
例:1/7的迴圈節為 142 857 相加後為999 999
6:尤拉函式:與b互素的餘數個數,當b為素數時,個數為b-1,迴圈長度<=個數,是個數的因數
#includeusing namespace std;
int main()
break;}}
}cout
}
求無限迴圈小數的迴圈節長度
新手的 思路 求出小數的小數部分,需要一定的長度,可以將其儲存在陣列中 將陣列分為最長 length 2 部分,一一進行比較判斷是否是迴圈節並求出迴圈節長度 package edu.ecut public class arraytest private intgetrepeatlength int ...
51nod oj 1035 最長的迴圈節 迴圈
1035 最長的迴圈節 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 正整數k的倒數1 k,寫為10進製的小數如果為無限迴圈小數,則存在乙個迴圈節,求 n的數中,倒數迴圈節長度最長的那個數。1 6 0.1 6 迴圈節長度為1 1 7 0.142857 迴圈節長度...
51nod 1035 最長的迴圈節
正整數k的倒數1 k,寫為10進製的小數如果為無限迴圈小數,則存在乙個迴圈節,求 n的數中,倒數迴圈節長度最長的那個數。1 6 0.1 6 迴圈節長度為1 1 7 0.142857 迴圈節長度為6 1 9 0.1 迴圈節長度為1 input 輸入n 10 n 1000 output 輸出 n的數中倒...