uva202迴圈小數

2021-10-06 22:27:48 字數 981 閱讀 1390

此題為演算法入門經典的3-8

這題輸入格式為第二行前面三個空格,然後進行兩個換行。

思路主要是通過兩個陣列進行模擬兩者的運算過程,乙個陣列儲存商,乙個陣列儲存餘數,自己進行手算模擬幾次就可以想到,如果有迴圈小數的話,他的餘數會與前面的餘數相等,一旦出現餘數相等,說明出現了迴圈體,就可以進行標記和break了,還有一點就是要注意,第乙個例子的3.040不是無窮迴圈小數,在計算小數點後的4的時候,他的餘數為0,和4後面的0的餘數是一樣的,所以要增加乙個條件,就是不僅這兩者的餘數要相同,而且商也要一樣,這樣就可以了。迴圈一共兩個,每計算一次新的餘數和商時,就要和前面的陣列進行比較一次,看看是否有相同的餘數。這裡也要注意初始化陣列,否則可能問題,比如前面前30個被賦值,而現在這個只有20個被賦值,不初始化的話,20-30就沒有被重新覆蓋,出現錯誤。

#include

#include

#include

#include

using

namespace std;

intmain()

}if(flat)

} cout << m1 <<

'/'<< n1 <<

" = "

<<<

'.';

for(

int i =

1; i < point1;

++i)

cout <<

'(';

if(point2 - point1 >50)

cout <<

"...";}

else

} cout <<

')'<< endl;

cout <<

" "

<< point2 - point1 <<

" = number of digits in repeating cycle"

<< endl <}return0;

}

UVA 202 迴圈小數

題意 給出兩個數n,m,求n m的迴圈小數。並輸出是多少位。大致思路 模擬除法運算,而什麼時候就可以知道這是乙個迴圈節了呢,其實很簡單,就是第一次同一餘數出現兩次時就可以說他是乙個迴圈節了。比如1 6 第一次餘數為1,1作為餘數出現了,標記一下,表示1已經出現了,此時的1乘以10就會變成10,繼續模...

迴圈小數 UVa202

輸入整數a和b 0 a 3000,1 b 3000 輸出a b的迴圈小數表示以及迴圈節長度。例如,a 5,b 43,小數表示為0.116279069767441860465 迴圈位元組長度為21 這個題,忘了怎樣使a b的結果保留多位小數!具體方法為計算得出其多位小數 位數要足夠大 再判斷其週期,週...

UVA 202 迴圈小數

題目大意 輸入整數a,b 0 a 3000,1 b 3000 輸出 a b 的迴圈小數表示以及迴圈節長度。code include include includeusing namespace std const int maxn 300005 int rem maxn quo maxn 分別記錄餘...