记录编号 238645 评测结果 AAAAAAAAAA
题目名称 [NOIP 1996]砝码称重 最终得分 100
用户昵称 Gravatar_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);
}