**链接:****传送门 **

题意:求 N 的拆分数

思路:

  • 吐嘈:****求一个数 N 的拆分方案数,但是这个拆分方案十分 cd ,例如:4 = 4 , 4 = 1 + 3 , 4 = 3 + 1 , 4 = 2 + 2 , 4 = 1 + 1 + 2 , 4 = 1 + 2 + 1 , 4 = 2 + 1 + 1 , 4 = 1 + 1 + 1 + 1,共 8 种,你没有看错,这跟普通概念上的拆分数有很大的不同,拆分数不考虑顺序,即 4 = 1 + 3 与 4 = 3 + 1 是相同的,及其坑爹,所以可以发现 N 的拆分数其实是 2^(n-1)

  • 由于 n 的范围大的可怕,直接快速幂是G了,这时候神奇的数学就起了很大的作用!不得不说数学真是美妙!真不愧是科学的基石!根据费马小定理( p 是素数 , 且 gcd( p , a ) = 1 ,则有 a^(p-1) % p = 1 )可知,MOD = 1e9 + 7 是素数,所以我们可以降幂!可以将 2 ^ n 降解为 2 ^ ( n % (MOD - 1) ),然后快速幂跑一下就 ok 了


/*************************************************************************
> File Name: hdu4704.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年05月22日 星期一 16时55分59秒
************************************************************************/ #include<bits/stdc++.h>
using namespace std; #define ll long long
#define mod(x) ((x)%MOD)
const int MAX_N = 100010;
const int MOD = 1e9+7; ll Trans(char* s,int mod){
ll sum = 0; int len = strlen(s);
for(int i = 0 ; i < len ; i++){
sum = ( sum*10 + s[i]- '0' ) % mod;
}
return sum;
}
ll quick_pow(ll a,ll x){
ll ret = 1;
while(x){
if(x&1) ret = ret * a % MOD;
a = a * a % MOD;
x >>= 1;
}
return ret;
}
int main(){
char s[MAX_N];
while(~scanf("%s",s)){
ll n = Trans(s,MOD-1);
ll ans = quick_pow(2,n-1);
printf("%lld\n",ans);
}
return 0;
}

HDU 4704 Sum( 费马小定理 + 快速幂 )的更多相关文章

  1. hdu 4704 Sum 费马小定理

    题目链接 求2^n%mod的值, n<=10^100000. 费马小定理 如果a, p 互质, 那么a^(p-1) = 1(mod p)  然后可以推出来a^k % p = a^(k%(p-1) ...

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

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

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

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

  4. hdu 4704 sum(费马小定理+快速幂)

    题意: 这题意看了很久.. s(k)表示的是把n分成k个正整数的和,有多少种分法. 例如: n=4时, s(1)=1     4 s(2)=3     1,3      3,1       2,2 s ...

  5. hdu 4704(费马小定理+快速幂取模)

    Sum                                                                                Time Limit: 2000/ ...

  6. 2014多校第一场 I 题 || HDU 4869 Turn the pokers(费马小定理+快速幂模)

    题目链接 题意 : m张牌,可以翻n次,每次翻xi张牌,问最后能得到多少种形态. 思路 :0定义为反面,1定义为正面,(一开始都是反), 对于每次翻牌操作,我们定义两个边界lb,rb,代表每次中1最少 ...

  7. hdu_4869(费马小定理+快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4869 Turn the pokers Time Limit: 2000/1000 MS (Java/O ...

  8. BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的 ...

  9. hdu4549(费马小定理 + 快速幂)

    M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n ...

随机推荐

  1. 【ACM】hdu_zs2_1006_Problem F_201308031058

    Problem F Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)Total Subm ...

  2. EF--code first数据迁移命令

    原文推荐!点我点我! 添加Migrations文件夹,并生成类文件Configuration.cs PM> Enable-Migrations -EnableAutomaticMigration ...

  3. SRM 621 D2L3: MixingColors, math

    题目:http://community.topcoder.com/stat? c=problem_statement&pm=10409&rd=15854 利用高斯消元求线性空间的基,也 ...

  4. KVO---视图间数据的传递:标签显示输入的内容【多个视图中】

    RootViewController.m #import "ModalViewController.h" @interface RootViewController () @end ...

  5. luogu2014 选课 背包类树形DP

    题目大意:有N门功课,每门课有个学分,每门课有一门或没有直接先修课(若课程a是课程b的先修课即只有学完了课程a,才能学习课程b).一个学生要从这些课程里选择M门课程学习,问他能获得的最大学分是多少? ...

  6. Jungle Roads --hdoj

    Jungle Roads Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  7. 简单介绍export default,module.exports与import,require的区别联系

    他们都是成对使用的,不能乱用: module.exports 和 exports是属于CommonJS模块规范,对应---> require属于CommonJS模块规范 export 和 exp ...

  8. Gitlab 维护措施

    Gitlab 升级: https://jingyan.baidu.com/article/72ee561ab1b333e16038df63.html Gitlab Rpm包地址: https://pa ...

  9. lua迭代

    迭代 function enum(array) local index = 1 return function() --返回迭代函数 local ret = array[index] index = ...

  10. [Offer收割]编程练习赛37

    热门号码 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> ...