题目链接:http://115.231.222.240:8081/JudgeOnline/problem.php?cid=1005&pid=10
题目思路:简单粗暴,让你求解小数点后第n位数,题解也简单粗暴,就是利用快速模幂,关键是怎么用。
核心:我们求小数点后的数的求法就是 a%b*10/b,.. 两位的话就是 a%b*10%b*10/b三位就是 a%b*10%b*10%b*10/b 化简看看就想到快速幂了。这种关系到不断的乘不断的乘,只要想快速模幂就好了,然后再想一下具体的求的方法。
代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll quickmod(ll a,ll b,ll c)
{
ll ans=1;
ll tmp=a%c;
while(b){
if(b&1) ans=ans*tmp%c;
tmp=tmp*tmp%c;
b>>=1;
}
return ans;
}
int main()
{
ll a,b,n;
while(~scanf("%lld%lld%lld",&a,&b,&n)){
n--;
printf("%lld\n",(a*quickmod(10,n,b)%b*10)/b);
}
}