解析:背包问题
package com.sihai.test; import java.util.Scanner; public class test { static int dp[] = new int[10000]; public static boolean judge(int x,int y) { int t; while(y>0) { t=x%y; x=y; y=t; } if(x==1) return true; return false; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a[] = new int[200]; int n = 0,i,j,res,mark; n = scanner.nextInt(); while(true) { res=0; mark=0; for(i=1;i<=n;i++) { a[i] = scanner.nextInt(); } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(judge(a[i],a[j])) { mark=1; break; } } if(mark==1) break; } if(mark!=1) { System.out.println("INF"); continue; } dp[0]=1; for(i=1;i<=n;i++) for(j=1;j<10000;j++) { if(a[i]>j) continue; if(dp[j-a[i]]==1) dp[j]=1; } for(i=0;i<10000;i++) { if(dp[i]!=1) res++; } System.out.println(res); } } }