HDU 4704 Sum Fermat定律
2024-09-02 00:46:13
Problem Description
Sample Input
2
Sample Output
2Hint1. For N = 2, S(1) = S(2) = 1. 2. The input file consists of multiple test cases.
好难理解的题意。
S(1)是代表把数字N分解为1个数,S(2)代表把N分解为2个数,S(3)代表把N分解为3个数。
其和都不等于N。
最后问把S(1) + S(2) + .. S(N)加起来的和有多少个?
就是个计数的问题。
最后得到公式这种和有2^(N-1)个。
最后问题转化为求大数2^(N-1) % 1E9 + 7的一个高幂次数求余问题。
參考了下这个博客:http://blog.csdn.net/xingyeyongheng/article/details/10910543
数学思维好抽象的。
const int SIZE = 100001;
const int MOD = int(1E9 + 7); char nums[SIZE]; __int64 Fermat(char *n, int mod)
{
__int64 ans = 0;
for (int i = 0; n[i]; i++)
{
ans = (ans * 10L + n[i] - '0') % mod;
}
return ans;
} __int64 fastPow(__int64 base, __int64 p)
{
p = (p + MOD) % MOD; __int64 ans = 1;
while (p)
{
if (p & 1) ans = ans * base % MOD;
base = base * base % MOD;
p >>= 1;
}
return ans;
} int main()
{
while(gets(nums) != NULL)//scanf("%s", nums) != EOF)
{
__int64 n = Fermat(nums, MOD-1) - 1;
printf("%I64d\n",fastPow(2, n));
}
return 0;
}
最新文章
- 1、利用蓝牙定位及姿态识别实现一个智能篮球场套件(一)——用重写CC2541透传模块做成智能手环
- BZOJ 2460 [BeiJing2011]元素 ——线性基
- web前端基础篇⑨
- eclipse中添加python开发环境
- Excel 日期转换
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
- bash广播
- Linux修改系统以及pip更新源
- UVa 1262 (第k字典序) Password
- ganymed-ssh2使用
- CallContext和多线程
- 构建一个真实的应用电子商务SportsStore(十一)
- iOS 模式详解—「runtime面试、工作」看我就 🐒 了 ^_^.
- 201521123100 《java程序设计》第12周学习总结
- linux shell数组
- zombodb 几个方便的_cat api
- thinkphp模型实例化
- mysql远程登录出错的解决方法
- STL源码剖析之空间配置器
- Linux如何关机与关机命令祥解
热门文章
- C++操作符重载总结operator(小结 更新ing)
- CSS隐藏overflow默认滚动条同时保留滚动效果
- 【henuacm2016级暑期训练-动态规划专题 C】Little Girl and Maximum XOR
- ACdream 1157 Segments
- LA 6437 Power Plant (prim最小生成树)
- html表格设计
- iOS (封装)一句话调用系统的alertView和alertController
- hdoj--2094--产生冠军(集合函数)
- (七)日志采集工具sleuth--分布式链路跟踪(zipkin)
- 27.boost多线程