题记
这道题涉及到带余除法:
要求a/b后面的小数,首先a对b求余,余数乘10再除b保留新的余数,除数就是第一个小数,新的余数乘10再除b得到第二位小数…
这道题这样做可以拿到部分分数,但是如果n特别大的话,n一个一个减小会特别慢,运行会超时,所以先一次减10快速逼近小数点后第n位。
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
ll a,b,n;
cin>>a>>b>>n;
a%=b;
while(n-10>0){
a*=1e10;
a%=b;
n-=10;
}
for(int i=1;i<=n+2;i++){
a*=10;
if(i>=n)
cout<<a/b;
a%=b;
}
return 0;
}