zoukankan      html  css  js  c++  java
  • Codeforces gym 101061 G【递推公式+逆元】

    题意:
    就是n复制m次,然后数mod1e9+7;
    思路:
    案例:31*10^6 + 31*10^4 + 31*10^2 + 31*10^0
    所以就是一个等比数列,然后整理一下就是n*(10^(m*len)-1)/(10^len-1),有个除法就是求下逆元,然后飞马小定理,那么答案就是…看代码…
    贴一发挫code…

    #include <bits/stdc++.h>
    #include<algorithm>
    using namespace std;
    
    typedef __int64 LL;
    const LL mod=1e9+7;
    
    LL cal(LL x,LL g)
    {
        LL ans=1;
        while(g)
        {
            if(g%2) ans=(ans*x)%mod;
            x=(x*x)%mod;
            g/=2;
        }
        return ans;
    }
    
    LL getlen(LL x)
    {
        LL ans=0;
        while(x)
        {
            ans++;
            x/=10;
        }
        return ans;
    }
    
    LL rev(int x)
    {
        return cal(x,mod-2);
    }
    
    int main()
    {
        int T;
        LL n,m;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%I64d%I64d",&m,&n);
            printf("%I64d
    ",n*(cal(10,getlen(n)*m)-1)%mod*rev(cal(10,getlen(n))-1)%mod);
        }
        return 0;
    }
  • 相关阅读:
    通知协议KVO的用法
    UIImageView用法
    默默的学习!
    多输入参数的方法
    一本书的摘录
    实例、局部、静态变量(java)
    分数相加的例题
    类的继承
    多线程
    单例
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934873.html
Copyright © 2011-2022 走看看