http://acm.hdu.edu.cn/showproblem.php?pid=1085
//1304713 2009-04-24 16:34:31 Accepted 1085 156MS 324K 728 B C++ no way
#include<iostream>
using namespace std;
int main()
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) {
int num[3];
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) int t[3]= {1,2,5};
while(cin>>num[0]>>num[1]>>num[2])
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
if(num[0] == 0 && num[1] == 0 && num[2] == 0)
break;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int outs[8005],temp[8005],i,j,k,s,N=0;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for(i=0;i<3;i++)
N += t[i] * num[i];
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for(i=0;i<=N+1;i++)
outs[i] = temp[i] = 0;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for(i=0;i<=num[0];i++) //一定要有底层
outs[i] = 1;
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for(i=1;i<=2;i++) //
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
for(j=0;j<=N;j++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { if(outs[j] == 0) continue;
for(k=0,s=0; k+j <= N && s<=num[i] ;s++, k+=t[i]) //注意个数的控制~
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
temp[k+j] += outs[j];
}
}
for(j=0;j<=N;j++)
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) {
outs[j] = temp[j];
temp[j] = 0;
}
}
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for(i=1;i<=N+1;i++)
if(outs[i] == 0)
break;
cout<<i<<endl;
}
return 0;
}
|