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

    转载请注明出处:http://blog.csdn.net/a1dark

    分析:一道找规律+数论的题、题目意思就是问你有多少种可以满足下面条件的数字组合、从小到大分析出来、你会发现是一个杨辉三角形、再相加、你就会发现答案是2的(N-1)次方、所以要求的就是2^n-1%M、一样就能看出来这是一个二分快速幂问题、当然由于底数是2、也可以用费马最小定理来做、我是直接二分快速幂搞定的、

    #include<stdio.h>
    #define MOD 1000000007
    char st[100001];
    long long int sum;
    int main(){
        while(scanf("%s",st)!=EOF){
            int i=0,j;
            sum=0;
            while(st[i]!=''){
                sum=sum*10;
                sum+=(st[i]-'0');
                i++;
                sum=sum%(MOD-1);
            }
            sum=sum-1;
            long long int temp=2,ret=1;
            while(sum){
                if(sum&1)ret=ret*temp%MOD;
                temp=temp*temp%MOD;
                sum>>=1;
            }
            printf("%lld
    ",ret);
        }
        return 0;
    }


  • 相关阅读:
    RSA加密算法
    ios 经典错误
    C--指针函数,static
    svn---命令行操作
    iOS中的自由桥接
    ios--socket
    ios错误修改了系统头文件
    ios数据库FMDB
    CoreDate的使用
    ios简单数据库运用
  • 原文地址:https://www.cnblogs.com/pangblog/p/3301589.html
Copyright © 2011-2022 走看看