记录编号 |
238645 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 1996]砝码称重 |
最终得分 |
100 |
用户昵称 |
_Itachi |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.008 s |
提交时间 |
2016-03-19 11:42:19 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main(){
freopen("fmcz.in","r",stdin);
freopen("fmcz.out","w",stdout);
int m=1000,tot=0,a,w[7]={0,1,2,3,5,10,20},q,j;
bool f[1001];
memset(f,0,sizeof(f));
f[0]=1;
for(int i=1;i<7;i++){
scanf("%d",&a);
if(a==0)continue;
for(j=1,q=0;q+j<a;j*=2)q+=j;
j/=2,q=a-q;
for(int v=m;v>=w[i]*q;v--)
f[v]=f[v]|f[v-w[i]*q];
for(;j>0;j/=2)
for(int v=m;v>=w[i]*j;v--)
f[v]=f[v]|f[v-w[i]*j];
}
for(int i=1;i<=m;i++)
if(f[i])tot++;
printf("%d\n",tot);
}