如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。
本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数。
#include <iostream> #include <cstdio> #include <map> #include <cstring> #include <vector> #include <algorithm> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; ll d = 1e10; ll a; int b,n; int c; int main() { scanf("%lld%d%d",&a,&b,&n); while(c < n) { a %= b; if(c + 10 < n) { a *= d; c += 10; } else { a *= 10; c ++; } } for(int i = 0;i < 3;i ++) { printf("%d",a / b); a %= b; a *= 10; } }
#include <iostream> #include <cstdio> #include <map> #include <cstring> #include <vector> #include <algorithm> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; ll a; int b,n; int c; int s = -1; int main() { scanf("%lld%d%d",&a,&b,&n); while(c < n) { a %= b; if(a == 0) break; if(a == s) { n %= c; c = 0; } else if(s == -1) s = a; a *= 10; c ++; } for(int i = 0;i < 3;i ++) { printf("%d",a / b); a %= b; a *= 10; } }