题意:

给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7)。

当中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3。                         (全题文末)

知识点:

整数n有种和分解方法。

费马小定理:p是质数,若p不能整除a。则 a^(p-1) ≡1(mod p)。

可利用费马小定理降素数幂。

当m为素数,(m必须是素数才干用费马小定理)

a=2时。(a=2仅仅是题中条件,a能够为其它值)

mod
m =   *     
//  k=

=                                
//==1为费马小定理的应用

比如,设p=7, n=32, 求2^32≡x(mod p)的值

因为p是素数。所以一定存在2^6≡1(mod p)

2^32%p=(2^[(6*5)+2])%p

=[2^(6*5)*2^2]%p

=[(2^(6*5)%p)*(2^2%p)]%p    //(a*b)%m=[(a%m)*(b%m)]%m;

=[1*(2^2%p)]%p                  //2^(6*5)%p为对费马小定理的应用

=2^2%p;

题解:

题目相当于求n的分解种数。

比如,n=x1+x2+x3+..xk是一种分解。把xi看成由xi个1组成,同理n即为n个1组成。

题目也就是给n个1分组的方法数(这不是类似于组合数学的小球间隔板问题吗)。每两个1之间是否放隔板,有放和不放两种选择。一共n-1个可选择间隔。

so 总方法数为 

因为n太大。不优点理啊。

指数太大,发现m=1e9+7为素数,则可用费马小定理(a^(p-1))≡1(mod p))降幂。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long LL;
const int mod=1e9+7,N=1e5+5;
char a[N]; LL quick_mod(LL a,LL p) //高速幂 (高速幂利用了二分思想和秦九昭算法)
{
LL ans=1;
while(p)
{
if(p&1)
ans=ans*a%mod;
a=a*a%mod;
p>>=1;
}
return ans;
} int main()
{
while(~scanf("%s",a))
{
int len=strlen(a);
LL ans=0;
for(int i=0;i<len;i++)
{
ans=(ans*10+a[i]-'0')%(mod-1);
}
ans=(ans-1+mod-1)%(mod-1);
printf("%lld\n",quick_mod(2,ans));
}
return 0;
}

这道题还能够找循环结。

发现 2^500000003 = 1 = 2^0。所以n=(n-1)%500000003,所以 2^(n - 1) = 2^((n-1)%(mod -1))%mod; (mod-1=500000003)

Sum

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

Submit Status

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. 

hdu 4704 Sum (整数和分解+高速幂+费马小定理降幂)的更多相关文章

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

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

  2. HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  3. 2020牛客寒假算法基础集训营1 J. 缪斯的影响力 (矩阵快速幂/费马小定理降幂)

    https://ac.nowcoder.com/acm/problem/200658 f(n) = f(n-1) * f(n-2) * ab ,f的第一项是x,第二项是y. 试着推出第三项是x·y·a ...

  4. hdu 4549 M斐波那契数列(快速幂 矩阵快速幂 费马小定理)

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4549: 题目是中文的很容易理解吧.可一开始我把题目看错了,这毛病哈哈. 一开始我看错题时,就用了一个快速 ...

  5. HDU 5667 Sequence 矩阵快速幂+费马小定理

    题目不难懂.式子是一个递推式,并且不难发现f[n]都是a的整数次幂.(f[1]=a0;f[2]=ab;f[3]=ab*f[2]c*f[1]...) 我们先只看指数部分,设h[n]. 则 h[1]=0; ...

  6. hdu 4549 M斐波拉契 (矩阵快速幂 + 费马小定理)

    Problem DescriptionM斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在 ...

  7. HDU 4549 M斐波那契数列(矩阵快速幂+费马小定理)

    M斐波那契数列 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submi ...

  8. HDU 5667 Sequence【矩阵快速幂+费马小定理】

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5667 题意: Lcomyn 是个很厉害的选手,除了喜欢写17kb+的代码题,偶尔还会写数学题.他找到 ...

  9. M斐波那契数列(矩阵快速幂+费马小定理)

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

随机推荐

  1. C++ 单例模式(读书笔记)

    #include <iostream> class Singleton {    static Singleton s;    int i;    Singleton(int x):i(x ...

  2. selenium3+python-多窗口、句柄(handle)

    一.获取当前窗口句柄 1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别. 2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换.但是脚本没长眼 ...

  3. go并发编程 WaitGroup, Mutex

    1.背景 记录一下,方便后续写代码直接使用. 需要注意几点: chan 默认支持多协程工作,不需要加锁. 其他变量操作需要使用锁保护(map多协程并发写会panic, 并且无法捕获). 启动gorou ...

  4. 如何通过免费开源ERP Odoo实现企业数字化转型深度分析(一)

    本文来自<开源智造企业数字化转型报告白皮书>的精选内容章节.请勿转载.欢迎您反馈阅读意见. 引言 在由消费者驱动的数字经济时代,创新之势锐不可挡.变革步伐从未如此迅速,并且还会越来越快.对 ...

  5. 使用ZeppelinHub来存储和展示ZeppelinNoteBook

    0.序 说实在的这个功能太赞了 在一开始接触的时候不知道有这个功能,我尝试做一下配置,发现非常的棒. 棒的原因有两点: 可以在随时随地有互联网的地方访问自己的ZeppelinHub来查看Zeppeli ...

  6. BZOJ 3679 数位DP

    思路: f[i][j]表示i位数乘积为j的方案数 j的取值最多5000多种,那就开个map存一下好了 f[i][mp[k*rec[j]]]+=f[i-1][j]; //By SiriusRen #in ...

  7. 2015 多校赛 第七场 1011 (hdu 5379)

    题意:给定一棵树,树上有 n 个节点.问有多少种方案,使得在每个节点上依次放置数 1~n 后,每个节点的儿子节点上的数连续(比如 1 为根,有1-2,1-3,1-4,则令2,3,4上的数连续),每个子 ...

  8. EmguCV学习——视频与图片互转

    其实视频转图片在上篇文章中已经有些眉目了,其实就是按帧读取视频,然后把帧保存就ok.然后自己再加个进度条美化一下...这代码简单易懂,还是直接上代码吧. 视频转图片 /// <summary&g ...

  9. HEK_费用报表审核无审核权限,有些字段无法编辑的问题处理

    Q:HEK_费用报表审核无审核权限,有些字段无法编辑的问题处理 A:设置AP员工->给AP员工分配审批权限->绑定员工和ERP账号 1.将审核人设置为AP员工 2.分配给员工审批权限 3. ...

  10. 复习java基础第六天(IO)

    一:File 类 • 输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内存)中.  • 输出:将程序(内存)数据输出到磁盘.光盘等存储设备中 • Java 的 IO 流主要包括输入.输出两种 ...