HDU4704+费马小定理
费马小定理
题意:求s1+s2+s3+...+sn;si表示n划分i个数的n的划分的个数,如n=4,则s1=1,s2=3
利用隔板定理可知,就是求(2^n-1)%mod-----Y
现在已知 (2^mod-1)%mod = 1,所以 Y = 2^( (n%(mod-1) -1 +mod)%mod )%mod
证明( 定理:a^(p-1)==1%p,gcd(a,p)==1 ):
(http://www.cnitblog.com/luckydmz/archive/2008/06/03/39458.html)
构造模p的完全剩余系P = {0,1, 2, … ,p-1},
因为gcd(a, p) = 1,所以A= {0*a, 1*a, 2*a, … ,(p-1)*a}也是模p的一个完全剩余系。
就是说P和A在模p意义下是相等的。
因为0 ≡ 0a (mod p),所以 P-{0} 与 A-{0*a}在模p意义下是相等的。
记P'=P-{0},A'=A-{0*a}
令W = πP' = 1 * 2 * 3 * 4 … * (p-1),Y = πA' = a * 2a *3a * 4a * …(p-1)a = W*a^(p-1) //π表示连乘积
有,W ≡ Y (mod p)
即,W ≡ W*a^(p-1) (mod p)
又因为,(W, p) = 1
则有,1 ≡ a^(p-1) (mod p)
/*
费马小定理
题意:求s1+s2+s3+...+sn;si表示n划分i个数的n的划分的个数,如n=4,则s1=1,s2=3
利用隔板定理可知,就是求(2^n-1)%mod-----Y
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<math.h>
using namespace std;
typedef long long int64;
//typedef __int64 int64;
typedef pair<int64,int64> PII;
#define MP(a,b) make_pair((a),(b))
const int maxn = ;
const int inf = 0x7fffffff;
const double pi=acos(-1.0);
const double eps = 1e-;
const int64 mod = +; int64 Fast_Pow( int64 a,int64 n,int64 mod ){
int64 res = ;
while( n>= ){
if( n& ){
res = res*a%mod;
}
a = a*a%mod;
n >>= ;
}
return res%mod;
} int64 GetNum( char str[],int64 mod ){
int64 res = ;
int len = strlen( str );
for( int i=;i<len;i++ ){
res = (res*+str[i]-'')%mod;
}
return res;
} int main(){
char str[ maxn ];
while( scanf("%s",str)!=EOF ){
int64 n = GetNum( str,mod- );
printf("%I64d\n",Fast_Pow( ,(n-+mod)%mod,mod ));
}
return ;
}
HDU4704+费马小定理的更多相关文章
- hdu4704之费马小定理+整数快速幂
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ...
- HDU4704Sum 费马小定理+大数取模
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4704 题目大意: 看似复杂,其实就是求整数n的划分数,4=1+1+2和4=1+2+1是不同的.因而可 ...
- HDU 4704 Sum( 费马小定理 + 快速幂 )
链接:传送门 题意:求 N 的拆分数 思路: 吐嘈:求一个数 N 的拆分方案数,但是这个拆分方案十分 cd ,例如:4 = 4 , 4 = 1 + 3 , 4 = 3 + 1 , 4 = 2 + 2 ...
- hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)
题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3. ...
- nyoj1000_快速幂_费马小定理
又见斐波那契数列 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 斐波那契数列大家应该很熟悉了吧.下面给大家引入一种新的斐波那契数列:M斐波那契数列. M斐波那契数列 ...
- poj 3734 Blocks 快速幂+费马小定理+组合数学
题目链接 题意:有一排砖,可以染红蓝绿黄四种不同的颜色,要求红和绿两种颜色砖的个数都是偶数,问一共有多少种方案,结果对10007取余. 题解:刚看这道题第一感觉是组合数学,正向推了一会还没等推出来队友 ...
- 数论初步(费马小定理) - Happy 2004
Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2 ...
- 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
Sum Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...
随机推荐
- JSON对象(自定义对象)
JSON对象(自定义对象) 1.什么是JSON对象 JSON对象是属性的无序集合,在内存中也表现为一段连续的内存地址(堆内存) 1)JSON对象是属性的集合 2)这个集合是没有任何顺序的 2.JSON ...
- js中的等号与非等号
等号与非等号都会进行类型转换,转换规则如下: 1 如果有一个是boolean值,则true改为1,false改为0 false == 0 ; true == 1 返回true true == 2 ...
- PHP服务器负载判断
<?php header("content-type:text/html;charset=utf-8"); // echo PHP_OS;exit; // echo get_ ...
- PHP中使用多线程
<?php while(1)//循环采用3个进程 { //declare(ticks=1); $bWaitFlag= FALSE; // 是否等待进程结束 //$bWaitFlag = TRUE ...
- Spark Streaming揭秘 Day35 Spark core思考
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...
- ASP.NET 页面传值得9种方式
1. Get(即使用QueryString显式传递) 方式:在url后面跟参数. 特点:简单.方便. 缺点:字符串长度最长为255个字符:数据泄漏在url中. 适用数据 ...
- [Learn Android Studio 汉化教程]第四章 : Refactoring Code
[Learn Android Studio 汉化教程]第四章 : Refactoring Code 第四章 Refactoring Code 重构代码 在Android Studio中开发,解决 ...
- 十五、mysql 分区之 分区管理
1.mysql分区处理分区字段NULL值的方式 1.range分区null被当作最小值处理 2.list分区null值必须被枚举出来,否则将出错 3.hash/key分区 null值当作0处理 2.R ...
- Redis之七种武器
长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...
- 【BZOJ 1003】 [ZJOI2006]物流运输trans
Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...