題意:給出兩個數n,m,求n/m的迴圈小數。並輸出是多少位。
大致思路:模擬除法運算,而什麼時候就可以知道這是乙個迴圈節了呢,其實很簡單,就是第一次同一餘數出現兩次時就可以說他是乙個迴圈節了。比如1/6 第一次餘數為1,1作為餘數出現了,標記一下,表示1已經出現了,此時的1乘以10就會變成10,繼續模擬除法運算10/6餘數為4,把4標記一下,4乘以10就會變成40,40/6餘數還是4,在之前4作為餘數已經出現過一次了,這就可以結束了,因為你在除下去也是重複以前的步驟。
想到這一點,其實也不是很容易實現,因為要記錄太多東西,一定要仔細。
#include#includeint book[3000],v[3000],s[3000];
int main()
printf("%d/%d = %d.",x,m,v[0]);
for(i=1; i50)
printf("...");
printf(")\n");
if(n==0)
printf(" 1 = number of digits in repeating cycle\n\n");
else printf(" %d = number of digits in repeating cycle\n\n",num-book[n]);
}return 0;
}
迴圈小數 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 分別記錄餘...
uva202迴圈小數
此題為演算法入門經典的3 8 這題輸入格式為第二行前面三個空格,然後進行兩個換行。思路主要是通過兩個陣列進行模擬兩者的運算過程,乙個陣列儲存商,乙個陣列儲存餘數,自己進行手算模擬幾次就可以想到,如果有迴圈小數的話,他的餘數會與前面的餘數相等,一旦出現餘數相等,說明出現了迴圈體,就可以進行標記和bre...