試題 歷屆試題 小數第n位

2021-10-02 17:51:29 字數 641 閱讀 6892

題目鏈結 

要考慮無限迴圈小數的情況,否則會超時。

我們根據經驗可以知道無限迴圈小數中迴圈位數的出現不會太晚,一般不會到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...