题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=201542
题意:
Geraldion是一个神奇的岛,拥有自己的货币系统。它使用了几个不同面值的货币,但问题是制度不完善,有时岛民不能用已有面值的货币表达一定的钱。当然,他们可以使用每种面值货币任何数量。这种不能用已知面值货币表达出来的金额被称为不幸和。问:给出已有货币面值,最小的不幸和是多少?
输入行:首行输入Geraldion岛拥有的货币面值数,次行输入已知的货币面值;
输出行:若无最小不幸和,输出'-1',否则单行输出最小的不幸和。
案例:
Input
5
1 2 3 4 5
Output
-1
分析:
货币面值如若存在为'1'的,则其他任意金额都可由'1'构成,反之,不存在面值为'1'的货币,则任意其它金额都不能构成'1','1'为最小的不幸和。故只需判断给出的面值中是否存在'1'即可。
源代码:
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int maxn=1000; 5 int a[maxn]; 6 int main() 7 { 8 int n,i; 9 cin>>n; 10 for(i=0;i<n;i++)//输入拥有的货币面值 11 cin>>a[i]; 12 sort(a,a+n);//排序 13 if(a[0]==1)//判断是否存在面值为1的货币 14 cout<<"-1"<<endl; 15 else 16 cout<<"1"<<endl; 17 return 0; 18 }