OpenJudge_P1761 神奇的口袋(2)
2015-12-07 19:53
381 查看
总时间限制: 1000ms 内存限制: 65536kB
描述
有一个神奇的口袋,总的容积是400,用这个口袋可以变出一些物品,这些物品的总体积必须是400。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是400,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。
输入
输入的第一行是正整数n (1 <= n <= 200),表示不同的物品的数目。接下来的n行,每行有一个1到400之间的正整数,分别给出a1,a2……an的值。
输出
输出不同的选择物品的方式的数目对10000取模的结果(因为结果可能很大,为了避免高精度计算,只要求对10000取模的结果)。
样例输入
3
200
200
200
样例输出
3
描述
有一个神奇的口袋,总的容积是400,用这个口袋可以变出一些物品,这些物品的总体积必须是400。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是400,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。
输入
输入的第一行是正整数n (1 <= n <= 200),表示不同的物品的数目。接下来的n行,每行有一个1到400之间的正整数,分别给出a1,a2……an的值。
输出
输出不同的选择物品的方式的数目对10000取模的结果(因为结果可能很大,为了避免高精度计算,只要求对10000取模的结果)。
样例输入
3
200
200
200
样例输出
3
#include<cstdio> #include<iostream> using namespace std; #define N 405 #define MOD 10000 int n,a ,f ; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); f[0]=1; for(int i=1;i<=n;i++) for(int j=400;j>=a[i];j--){ f[j]+=f[j-a[i]];f[j]%=MOD; } printf("%d",f[400]); return 0; }
相关文章推荐
- NSRunLoop与代理一起使用遇到的坑
- OpenJudge_P1757 神奇的口袋
- 在线学习网站之freecodecamp
- Linux命令学习笔记(2)----more命令
- shell取消键盘回显
- Linux 下查看机器代码
- openflow一般概念
- ROC(Receiver Operating Characteristic)曲线简介
- 关于opencv中的imread()函数声明
- nginx 状态码整理
- 【原】低版本MyEclipse整合高版本Tomcat
- Nginx工作原理和优化、漏洞。
- LoadRunner监控Apache的步骤
- nginx 添加perl
- 《构建高可用LINUX服务器》读书笔记
- LoadRunner监控Linux
- linux程序多线程互斥锁的简单使用
- linux下安装webbench
- CentOS 6.5升级Python2.7
- loadrunner的agent部署在linux下