題目鏈結
要考慮無限迴圈小數的情況,否則會超時。
我們根據經驗可以知道無限迴圈小數中迴圈位數的出現不會太晚,一般不會到50位(覺得不保險可以到500)。
於是我們可以用兩個陣列,第乙個陣列記錄前50位小數,第二個陣列記錄迴圈位數(從第50位開始,50位我們可以保證迴圈已經開開始)。
然後根據上面思路模擬出發即可。
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
const int maxn = 1010;
typedef long long ll;
int main()
int tmp = a, len = 0, cnt = 1;
// 從51位尋找迴圈位數
do while(tmp != a);
if(n <= 50)
cout << arr[n] << arr[n+1] << arr[n+2] << endl;
else
return 0;
}
試題 歷屆試題 小數第n位
思路 就是將a擴大10的n 2次方倍,將a b的結果變成整數 a 10 n 2 b 1000 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。本題的任務是...
歷屆試題 小數第n位
問題描述 我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。本題的任務是 在上面的約定下,求整數除法小數點後的第n位開始的3位數。輸入格式 一行三個整數 a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置 0...
歷屆試題 小數第n位
問題描述 我們知道,整數做除法時,有時得到有限小數,有時得到無限迴圈小數。如果我們把有限小數的末尾加上無限多個0,它們就有了統一的形式。本題的任務是 在上面的約定下,求整數除法小數點後的第n位開始的3位數。輸入格式 一行三個整數 a b n,用空格分開。a是被除數,b是除數,n是所求的小數後位置 0...