大致题意:
有五个山头可以采蘑菇,现在先给出n(n<=5)个山头上采到蘑菇的数量,剩下的5-n个不知道。现在已经知道有两种妖怪,第一种,你需要给他三个山头上采到的蘑菇,而且必须给它三个包的数量和必须整除1024,否则就要把所有山头上采的蘑菇给它
第二种,每次吃掉1024的蘑菇,直到你的蘑菇量小于等于1024.
大致思路:
考阅读的题目~~分情况讨论即可。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
bool flag;
int num[10],n;
int getans(int a)
{
while(a>1024)a-=1024;
return a;
}
int main()
{
int i,j,a,b,c,sum,ans;
while(cin>>n)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
sum+=num[i];
}
sort(num,num+n);
if(n<=3)
{
cout<<1024<<endl;
continue;
}
if(n==4)
{
flag=0;
for(i=0;i<n;i++)
{
if((sum-num[i])%1024==0)
{
cout<<1024<<endl;
flag=1;
break;
}
}
if(!flag)
{
ans=0;
//cout<<getans(num[2]+num[3])<<endl;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
ans=max(ans,getans(num[i]+num[j]));
}
}
cout<<ans<<endl;
}
continue;
}
flag=0;
int tmp;
ans=0;
if(n==5)
{
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
{
tmp=sum-num[i]-num[j];
if(tmp%1024==0)
{
ans=max(ans,getans(num[i]+num[j]));
flag=1;
}
}
}
if(flag==1)
{
cout<<ans<<endl;
}
else{
cout<<0<<endl;
}
}
}
return 0;
}
分享到:
相关推荐
zoj 1610 Count the Colors.md
zoj 1255 The Path.md
ZOJ解题报告ZOJ解题报告ZOJ解题报告ZOJ解题报告
zoj 1810 The Gourmet Club.md
zoj 2499 The Happy Worm.md
zoj 2151 The Highest Profits.md
zoj题目简单归类zoj题目简单归类zoj题目简单归类
acm中zoj1002的可运行C++程序
包含了zoj700多道题目的源代码,在做题时可以参考
Problem Arrangement zoj 3777
ZOJ题目答案源码
一个非常非常非常非常实用的zoj结题代码
学习ACM程序设计的朋友一定要看,这是训练必备的POJ ZOJ题目分类及解题思路
ZOJ1805代码
The reason is that when the director chooses the words from the dictionary and encrypts them, he never changes their order (the words in the dictionary are lexicographically sorted). String a1a2 ... ...
zoj 1003 c语言的,要写这么多描述吗。。
本代码是zoj上AC的1951的代码,把双重循环简化为O(n),不过素数判断的改进还不够
zoj1027解题指南和代码,还不错,是学校培训给的。
浙大ZOJ题目分类,可以让你更方便快速锁定那你想要联系的题目,是自己快速提高·
ZOJ题解集合-截至2835。共1244个文件,C/C++,有重复