poj2229
来源:互联网 发布:it男是接盘侠 编辑:程序博客网 时间:2024/05/19 11:48
动态规划题,比较典型的“以空间换时间”。先按照递增的顺序把1到N(题目的数据上限)的分解的数目记下,之后直接查询即可。对于i来说,
如果i是奇数,那么因为他只比他前一个偶数多一个1,所以他和前一个偶数的分解数目是一样的。如果i是偶数,我们不妨按照1,2,4,8...的
顺序来分解i。这样,如果第一个分解的元素为1,那么i就和i-1和分解数目相同。如果第一个分解的元素为2或2的m次方,则第二个
(包括2)之后的元素均为偶数,这样各个元素除以2,于是i和i/2的分解数目相同,所以如果i是偶数,那么num[i]=num[i-1]+num[i/2];
程序如下:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(){ int n,i; long long num[1000005]={0}; num[1]=1;num[2]=2; for(i=3;i<=1000000;i++) { if(i%2==1) { num[i]=num[i-1]; } else { num[i]=num[i-1]+num[i/2]; } if(num[i]>1000000000) num[i]-=1000000000; } while(scanf("%d",&n)!=EOF) printf("%ld\n",num[n]); return 0;}
0 0
- poj2229
- poj2229
- poj2229
- poj2229
- poj2229
- poj2229
- dp-poj2229
- poj2229 Sumsets
- poj2229 Sumsets
- POJ2229 Sumsets
- POJ2229 Sumsets
- POJ2229 Sumsets
- poj2229 dp
- POJ2229--Sumsets
- 【poj2229】Sumsets
- POJ2229-Sumsets
- POJ2229 Sumsets
- sumsets(poj2229)
- IOUtil
- Java NIO使用及原理分析(二)
- 二叉树中的那些常见的面试题
- A valid provisioning profile for this executable was not found.
- 六个超大规模Hadoop部署案例
- poj2229
- iOS开发Tips
- git 知识整理
- Android 游戏开发入门
- 学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第5章首次登陆与在线求助 笔记
- Java NIO使用及原理分析(三)
- 操作系统与C语言中的堆栈及其区别
- 如何发高质量外链以及挖掘高质量外链平台?
- Java NIO使用及原理分析 (四)