zoukankan      html  css  js  c++  java
  • hdu 4704 Sum

    思路:对于给定的n,s(i)即将n分解为i个数的组合数,也就是在n-1个位置插入i-1个板即C(n-1,i-1);

    ∑S=2^(n-1);

    phi(1000000007)=1000000006;

    对于n>=phi,有a^n%c=a^(n%phi(c)+phi(c))%c。

    代码如下:

     1 #include<cstdio>
     2 #include<cstring>
     3 #define ll __int64
     4 #define mod 1000000007
     5 #define phi 1000000006
     6 char s[100002];
     7 ll pow(ll a,ll b)
     8 {
     9     ll ans=1;
    10     while(b){
    11         if(b&1) ans=ans*a%mod;
    12         b>>=1;
    13         a=a*a%mod;
    14     }
    15     return ans;
    16 }
    17 int main()
    18 {
    19     int len,i;
    20     ll a,b;
    21     while(scanf("%s",s)!=EOF){
    22         len=strlen(s);
    23         a=b=0;
    24         for(i=0;i<len;i++){
    25             a=a*10+s[i]-'0';
    26             if(b==0&&a>=phi) b=phi;
    27             a%=phi;
    28         }
    29         printf("%I64d
    ",pow(2,(a+b-1)%phi));
    30     }
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    CSS介绍
    docker入门
    nginx+uWSGI+django+virtualenv+supervisor发布web服务器
    niginx入门
    常用服务安装部署
    VIM
    linux基本命令
    linux目录分级
    OpenStack共享组件
    kvm认识和安装
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3277501.html
Copyright © 2011-2022 走看看