HDU 4602 - Partition
2016-02-19 17:16
274 查看
原题见:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=106940#problem/A
题目要求:按题意找出对应数字出现的次数。
4=1+1+1+1
4=1+1+2
4=1+2+1
4=2+1+1
4=1+3
4=2+2
4=3+1
4=4 例如此例:1出现的次数为12。
代码如下:
找规律即可,例如将5的实例也写出后数数=,=会发现
n=%d 1 2 3 4 5
k=1 1 2 5 12 28
k=2 0 1 2 5 12
k=3 0 0 1 2 5
k=4 0 0 0 1 2
k=5 0 0 0 0 1
找到规律吧少年~~~~f(n)=2*f(n-1)+pow(2,n-3)或者ans=2*pow(2,n-k-1)%mod+(n-k-1)*pow(2,n-k-2)%mod
也就是说注释的部分也是对的,那为什么会变成注释呢? =。=因为递归层数太多,导致本宝的程序MLT……!!空间超限。。。生平第一次啊。。。。然后就沦为注释。。。
嗯,就这样吧!
题目要求:按题意找出对应数字出现的次数。
4=1+1+1+1
4=1+1+2
4=1+2+1
4=2+1+1
4=1+3
4=2+2
4=3+1
4=4 例如此例:1出现的次数为12。
代码如下:
#include <stdio.h> typedef long long ll; ll mod=1e9+7; //#include <stdlib.h> ll qpow(ll n,ll m) { ll ans = 1; while(m>0) { if(m&1) ans = ans * n % mod; n = n * n % mod; m = m >> 1; } return ans; } /*ll fun(ll n,ll k) { if(n==k) return 1; else if(n==k+1) return 2; else if(n-2 == k) return 5; //else if(n-3 == k)return 12; else return 2*fun(n-1,k)+qpow(2,n-3); }*/ int main() { int t; ll ans,n,k; scanf("%d",&t); while(t--) { scanf("%lld%lld",&n,&k); if(k>n) { printf("0\n"); continue; } else { //printf("%lld\n",fun(n,k)); ans=2*qpow(2,n-k-1)%mod+(n-k-1)*qpow(2,n-k-2)%mod; printf("%lld\n",ans%mod); } } return 0; }
找规律即可,例如将5的实例也写出后数数=,=会发现
n=%d 1 2 3 4 5
k=1 1 2 5 12 28
k=2 0 1 2 5 12
k=3 0 0 1 2 5
k=4 0 0 0 1 2
k=5 0 0 0 0 1
找到规律吧少年~~~~f(n)=2*f(n-1)+pow(2,n-3)或者ans=2*pow(2,n-k-1)%mod+(n-k-1)*pow(2,n-k-2)%mod
也就是说注释的部分也是对的,那为什么会变成注释呢? =。=因为递归层数太多,导致本宝的程序MLT……!!空间超限。。。生平第一次啊。。。。然后就沦为注释。。。
嗯,就这样吧!
相关文章推荐
- poj 1979 Red and Black (简单BFS)
- 机器学习实战学习1:python实现KNN
- Elasticsearch2.x手册 - 第1章 入门指南 - 1.1 基本概念
- 仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装
- jquery遍历数组与筛选数组的方法
- C++函数的默认参数
- 【BZOJ2326】【codevs2314】数学作业,第100篇博文纪念
- 带表情符号的自定义键盘
- iOS开发中那些高效常用的宏
- uva 11054 Wine trading in Gergovia
- Win7系统桌面出现一个白色框框无法关闭的故障分析及解决方法
- 表达式求值 中缀式转换成后缀式
- 深度学习系列(1)——简要概念
- struct 和typedef struct
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- HTTP状态码
- C语言
- ios开发- 将字符串切割成数组 componentSeparatedByString
- 接口委托实现--通过类的对象
- Jenkins 一: 环境安装以及配置