Problem Description

Sample Input

2

Sample Output

2

Hint

1. For N = 2, S(1) = S(2) = 1.

2. The input file consists of multiple test cases.
解题思路:由于指数很大,要用到欧拉降幂公式,即扩展欧拉定理:$ a^n \equiv a^{n \; mod \;\varphi(p)} (mod \; p)$,其中$gcd(a, p) = 1$。题目的意思就是给出一个N,N∈[1,10^100000],求(S1+S2+...+SN)mod(10^9+7),其中Si表示i个数相加总和为N组成的方案数,那么原问题就可以转换成N=x1+x2+x3+...+xN,其中xi看作是由m个1(m∈[0,N])相加得到的,则SN就有N个1(xi=1(i∈[1,N]))相加得到,所以也就是求N个1分组的方案数(小球隔板问题)。将N个1排成一行,有N-1个空,每个空可以选择插入或者不插入一块隔板,则一共有2^(N-1)种方案数。由于N很大,直接套整数快速幂模板肯定是不行的,又因为10^9+7是一个质数,因此是否可以通过费马小定理来实现对指数N-1先取个模,然后再套一下整数快速幂取模运算?我们来推导一下公式:根据费马小定理公式:a(p-1)≡1(mod p),其中p是质数,p不能整除a。假设n=n%(p-1)+t*(p-1),其中t=n/(p-1),则2n%p=2n%(p-1)%p*(2t)(p-1)%p,由于gcd(2t,p)=1,即(2t)(p-1)≡1(mod p),所以最终推得的公式为2n%p=2n%(p-1)%p。用字符串读取N,同时取模p-1,因为(N-1)%(p-1)=N%(p-1)-1,所以将N模p-1得到的结果N'再计算一下2(N'-1)%p即可。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1e9+;
const int maxn=1e5+;//N最大有10^5位
char str[maxn];
LL mod_power(LL a,LL b){//整数快速幂
LL ans=;
while(b){
if(b&)ans=ans*a%mod;
a=a*a%mod;
b>>=;
}
return ans;
}
int main(){
while(cin>>str){
LL N=;
for(int i=;str[i]!='\0';++i)
N=(*N+(str[i]-''))%(mod-);//先处理N'=N%(p-1)
cout<<mod_power(,N-)<<endl;//再求2^(N'-1)%p即可
}
return ;
}

题解报告:hdu 4704 Sum(扩展欧拉定理)的更多相关文章

  1. HDU 4704 Sum (高精度+快速幂+费马小定理+二项式定理)

    Sum Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  2. hdu 4704 Sum【组合数学/费马小定理/大数取模】By cellur925

    首先,我们珂以抽象出S函数的模型:把n拆成k个正整数,有多少种方案? 答案是C(n-1,k-1). 然后发现我们要求的是一段连续的函数值,仔细思考,并根据组合数的性质,我们珂以发现实际上答案就是在让求 ...

  3. 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum

    Sum Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...

  4. HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description   Sample Input 2 Sample Outp ...

  5. hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)

    题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3.                  ...

  6. HDU 4704 Sum (隔板原理 + 费马小定理)

    Sum Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/131072K (Java/Other) Total Submiss ...

  7. HDOJ 4704 Sum 规律 欧拉定理

    规律 欧拉定理: 找规律 2^n-1 ,n 非常大用欧拉定理 Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/13 ...

  8. hdu 4704 Sum (整数和分解+高速幂+费马小定理降幂)

    题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7). 当中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3.                 ...

  9. hdu 4704 Sum(组合,费马小定理,快速幂)

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4704: 这个题很刁是不是,一点都不6,为什么数据范围要开这么大,把我吓哭了,我kao......说笑的, ...

随机推荐

  1. ThoughtWorks技术雷达

    ThoughtWorks技术雷达 技术成熟方案的一个推荐网站.

  2. Python - 多次检查后缀名(endwith)

    在通过后缀名查找类型文件的时候, 多次使用endwith, 使用元组(tuple), 简化操作. 此类方式, 也能够应用于if语句多次类似检測. 代码 # 列出目录内全部代码 def list_dic ...

  3. lightoj 1138 - Trailing Zeroes (III)【二分】

    题目链接:http://lightoj.com/volume_showproblem.php? problem=1138 题意:问 N. 末尾 0 的个数为 Q 个的数是什么? 解法:二分枚举N,由于 ...

  4. 国内博客(blog)搬家工具(服务)大全

    如今网络上的博客搬家 服务,博客搬家工具 越来越多,博客联盟 大概收集了下,希望对那些想搬家的博客有所帮助. 一.和讯博客的“搬家公司”提供博客搬家 服务 搬家服务地址:点这里 目标对象:新浪博客 . ...

  5. 聚合类新闻client产品功能点详情分析

    产品功能点 功能 今日头条 百度新闻 鲜果 ZAKER 媒体订阅 × √ ★ ★ 个性化内容推荐 ★ √ × × 个性化订阅(RSS) × × ★ × 视频新闻 × × × × 评论盖楼 √ √ √ ...

  6. SpringMVC_配置和注解--跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

    Spring2.5 之前,我们都是通过实现Controller 接口或其实现来定义我们的处理器类,就像前面介绍的 这里介绍的是Spring3.1的新特性,虽然现在我用的是spring4.2.6,不过基 ...

  7. Koa2学习(七)使用cookie

    Koa2学习(七)使用cookie Koa2 的 ctx 上下文对象直接提供了cookie的操作方法set和get ctx.cookies.set(name, value, [options])在上下 ...

  8. JDK安装以及配置环境变量的步骤

    ---恢复内容开始--- 一.JDK安装 JDK下载链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...

  9. XMU 1056 瞌睡 vs 听课 【动态规划】

    1056: 瞌睡 vs 听课 Time Limit: 500 MS  Memory Limit: 64 MBSubmit: 19  Solved: 6[Submit][Status][Web Boar ...

  10. YTU 2953: A代码填充--学画画

    2953: A代码填充--学画画 时间限制: 1 Sec  内存限制: 128 MB 提交: 62  解决: 52 题目描述 最近小平迷上了画画,经过琨姐的指导,他学会了RGB色彩的混合方法.对于两种 ...