题目链接:http://acm.swust.edu.cn/problem/0234/
Time limit(ms): 1000 Memory limit(kb): 65535
Description
You are given a list of number. An integer K is irreducible with respect to the numbers if K cannot be represented as
a sum of one or more elements from the numbers, where each element of the numbers may be used at most once. Return
the smallest positive integer that is irreducible with respect to the given numbers.
a sum of one or more elements from the numbers, where each element of the numbers may be used at most once. Return
the smallest positive integer that is irreducible with respect to the given numbers.
Input
n: the size of the numbers, -1 indicates end. (1 =< n <= 3)
next line contains n numbers (1 =< number <= 100)
next line contains n numbers (1 =< number <= 100)
Output
the smallest positive integer that is irreducible with respect to the given numbers.
Sample Input
2
1 1
2
1 2
-1
|
Sample Output
3
4
|
SCPC__张剑
题目大意:题意是这样的,输入n(n!=-1),接下来n个数,凡是这些数和它们相加能得到的数字都不能使用,从1开始遍历,把能使用的最小的数输出来~~~
代码如下:
由于最多3个数
1 #include <iostream> 2 using namespace std; 3 int a[5], vis[301]; 4 int main(){ 5 int n, i; 6 while (cin >> n, n != -1){ 7 memset(vis, 0, sizeof(vis)); 8 for (i = 1; i <= n; i++){ 9 cin >> a[i]; 10 vis[a[i]] = 1; 11 } 12 if (n == 2){ 13 vis[a[1] + a[2]] = 1; 14 } 15 else{ 16 vis[a[1] + a[2]] = 1; 17 vis[a[2] + a[3]] = 1; 18 vis[a[1] + a[3]] = 1; 19 vis[a[1] + a[2] + a[3]] = 1; 20 } 21 for (i = 1;; i++) 22 if (!vis[i]) { 23 cout << i << endl; 24 break; 25 } 26 } 27 return 0; 28 }
其实多简单的,就是题意太坑了有木有~~~