ZJCOJ qwb与小数 思维+快速幂

来源:互联网 发布:剑三的正太捏脸数据 编辑:程序博客网 时间:2024/04/30 08:08

题目链接

这个题想到了就是裸的快速幂想不到就暴力TLE吧。。。。

我们求小数点后的数的求法就是 a%b*10/b,.. 两位的话就是 a%b*10%b*10/b三位就是 a%b*10%b*10%b*10/b  化简看看就想到快速幂了... 当然笨菜鸡 只会orz.

#include<bits/stdc++.h>#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("%s", a)#define Pi(a) printf("%d\n", (a))#define Pf(a) printf("%lf\n", (a))#define Pl(a) printf("%lld\n", (a))#define Ps(a) printf("%s\n", (a))#define W(a) while(a--)#define CLR(a, b) memset(a, (b), sizeof(a))#define MOD 1000000007#define inf 0x3f3f3f3f#define exp 0.00000001#define  pii  pair<int, int>#define  mp   make_pair#define  pb   push_backusing namespace std;typedef long long ll;const int maxn=1e5+10;ll gcd(ll a,ll b){    return b==0?a:gcd(b,a%b);}ll a,b,n;ll quick(ll x,ll y){    ll ans=1;    while(y)    {        if(y&1)        ans=ans*x%b;        x=x*x%b;        y>>=1;    }    return ans;}int main(){    while(~Rl(a))    {    Rl(b),Rl(n);    n--;    ll zz=(a*quick(10,n)%b*10)/b;    Pl(zz);    }    return 0;}

原创粉丝点击