zoukankan      html  css  js  c++  java
  • Codeforces_327_C

    http://codeforces.com/problemset/problem/327/C

    等比求和相加,有mod的出现,所以要算逆元。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #define LL long long
    #define MOD 1000000007
    using namespace std;
    
    char s[100005];
    int k;
    
    LL p_mod(LL a,LL b,LL c)
    {
        LL ans = 1;
        a = a%c;
        while(b > 0)
        {
            if(b%2 == 1)    ans = (ans*a)%c;
            b /= 2;
            a = (a*a)%c;
        }
        return ans;
    }
    
    LL get_inv(LL a,LL c)
    {
        return p_mod(a,c-2,c);
    }
    
    int main()
    {
        scanf("%s%d",s,&k);
        LL ans = 0;
        int len = strlen(s);
        LL x = p_mod(2,len,MOD);
        LL y = get_inv(x-1,MOD);
        x = p_mod(x,k,MOD)-1;
        LL z = 0;
        for(int i = 0;i < len;i++)
        {
            if(s[i] == '0' || s[i] == '5')
            {
                z = (z+p_mod(2,i,MOD))%MOD;
            }
        }
        ans = (((z*x)%MOD*y)%MOD)%MOD;
        printf("%I64d
    ",ans);
        return 0;
    }
  • 相关阅读:
    平时十二测
    无题十四
    暑假第十测
    无题十三
    noip错题集
    无题十二
    BZOJ整理
    志愿者招募
    修车
    任务安排
  • 原文地址:https://www.cnblogs.com/zhurb/p/5944351.html
Copyright © 2011-2022 走看看