1035 最長的迴圈節 迴圈小數)

2021-09-29 09:20:56 字數 989 閱讀 9377

正整數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的數中倒...