POJ 2229 DP
2016-05-15 19:52
337 查看
题意:给你个数,让你把它拆成2的幂的和,问有几种拆分方案。
思路:仔细想一想,就是个递推。
- 如果是奇数,那么它的方案数和它减一这个数的方案数是一样的。因为1不能拆成除1以外的2的幂之和。(呃说的不太清楚,意会意会(⊙﹏⊙)b)。【举个例子:100的方案数 和101的方案数是一样的】
- 如果是偶数,那么它的方案数等于它减一这个数的方案数与它除以二这个数的方案数之和。【举个例子:6的方案数=3的方案数+5的方案数】
也可以先手算几个数找找规律,用不完全归纳。
// by Sirius_Ren #include <cstdio> using namespace std; int f[1000001],n; int main(){ scanf("%d",&n); f[1]=1;f[2]=2; for(int i=3;i<=n;i++) if(i&1)f[i]=f[i-1]; else f[i]=(f[i-1]+f[i/2])%1000000000; printf("%d",f ); }
代码很短,只有10行。
相关文章推荐
- POJ 2229 DP
- Celery(二)-----------------使用Celery的第二步
- iOS framework 使用单元测试报错解决
- 使用配置文件为购物车提供一个商品放置数据库
- 如何优雅的写作与分享技术?-Markdown 语法简要
- Vector源码注释,粗略理解
- POJ3635 Full Tank?(DP + Dijkstra)
- 利用随机数随机生成指定位数的字符串
- nodejs及npm命令
- 计数排序
- 高精度除法(高精除以低精)——一步一步算法篇
- mongodb增删改查基本操作
- android开发人员获取sqlite
- 5月中旬的一些总结
- 常见排序算法(比较排序)及比较
- 【Scala】响应式编程思想
- 使用ASM字节码框架实现AOP功能
- Java的个人总结
- 第11周学习进度条
- 2016年团体程序设计天梯赛-模拟赛