标签:include int 小明 else data ret namespace 蓝桥杯 pac
问题描述
如果所有数的最大公约数不为1则有无限多数目凑不出来,即输出INF,否则就是个01背包。
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 #include <set> 7 #include <map> 8 #include <math.h> 9 #define MAX_N 105 10 #define MAX_M 10050 11 #define ll long long 12 13 using namespace std; 14 15 int n; 16 int num[MAX_N]; 17 int dp[MAX_M]; 18 int yue(int a,int b) 19 { 20 int t; 21 while(b){ 22 t = b; 23 b = a % b; 24 a = t; 25 } 26 return a; 27 } 28 int main() 29 { 30 scanf("%d",&n); 31 for(int i = 1; i <= n ;i++) 32 scanf("%d",&num[i]); 33 int ans = num[1]; 34 for(int i = 2; i <= n; i++) 35 { 36 ans = yue(ans,num[i]); 37 } 38 if(ans>1) 39 { 40 printf("INF\n"); 41 } 42 else 43 { 44 fill(dp,dp+MAX_M,0); 45 int va = 0; 46 dp[0] = 1; 47 for(int i = 1; i <= n; i++) 48 { 49 for(int j = 0; j < MAX_M; j++) 50 { 51 if(dp[j]) 52 { 53 dp[j+num[i]] = 1; 54 } 55 } 56 } 57 for(int i = 1; i < MAX_M; i++) 58 if(dp[i]==0) 59 va++; 60 printf("%d\n",va); 61 } 62 return 0; 63 }
标签:include int 小明 else data ret namespace 蓝桥杯 pac
原文地址:https://www.cnblogs.com/Xycdada/p/9000123.html