博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4704 Sum (整数和分解+高速幂+费马小定理降幂)
阅读量:6679 次
发布时间:2019-06-25

本文共 1427 字,大约阅读时间需要 4 分钟。

题意:

给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
#include
#include
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

这道题还能够找循环结。

发现 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

 

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.

转载地址:http://wonao.baihongyu.com/

你可能感兴趣的文章
centos 学习日记 文件隐藏属性 chattr lsattr
查看>>
新手处理事故之误删boot目录以及更严重的删除操作
查看>>
bootstap-table 只显示列名和表格不显示数据
查看>>
pycharm 5注册
查看>>
java-buildpack源码分析之Release
查看>>
iptables实现网络防火墙及地址转换
查看>>
如何将sql 2000数据库 移植到 mysql 数据库中
查看>>
离线安装gcc(CentOS7)
查看>>
客运车辆监管及运营平台
查看>>
eclipse添加注释
查看>>
贝叶斯估计和最大后验估计
查看>>
COBBLER无人值守安装
查看>>
基础知识--JAVA注解ElementType
查看>>
kickstart部署centos6.2 x86_64
查看>>
salt 的用户管理
查看>>
我封装的全文检索之solr篇
查看>>
NFC的第一次接触
查看>>
RHEL7 Connection closed by foreign host.
查看>>
Nodejs开发框架之Loopback介绍
查看>>
微信小程序下拉刷新使用整理
查看>>