蓝桥杯 15.小数第n位
小数第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