小數第n位
原題目鏈接
題目描述
我們知道,整數做除法時,有時會得到有限小數,有時會得到無限循環小數。
如果我們把有限小數的末尾加上無限多個 0
,它們就具有了統一的形式。
本題的任務是:在上述約定下,求整數除法結果中小數點后第 n
位開始的 3 位數字。
輸入描述
輸入一行,包含三個整數 a b n
,用空格分隔:
a
是被除數b
是除數n
是所求的小數后位置
約束條件:
0 < a, b, n < 10?
輸出描述
輸出一行,表示 a ÷ b
的結果中,小數點后第 n
位開始的連續 3 位數字。
輸入樣例
1 8 1
輸出樣例
125
c++代碼
#include<bits/stdc++.h>using namespace std;typedef long long ll;ll a, b, n;ll mypow(ll a, ll b, ll c) {if (b == 0) return 1 % c;if (b == 1) return a % c;__int128_t w = mypow(a, b / 2, c);if (b % 2 == 0) return (w * w) % c;else return (w * w * a) % c;
}int main() {cin >> a >> b >> n;a %= b;cout << ((a % (10 * b)) * mypow(10, n, 10 * b) % (10 * b)) / b;cout << ((a % (10 * b)) * mypow(10, n + 1, 10 * b) % (10 * b)) / b;cout << ((a % (10 * b)) * mypow(10, n + 2, 10 * b) % (10 * b)) / b;return 0;
}//by wqs