受不了了,求教大佬们这段dp为啥48分
查看原帖
受不了了,求教大佬们这段dp为啥48分
1179393
Noldo楼主2024/1/18 17:33
#include<iostream>
using namespace std;
const int N = 105;
int n, a[N];
int GCD;
int dp[10005];
int gcd(int a, int b) {
    if (a % b == 0) return b;
    else return gcd(b, a % b);
}
int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
        if (i > 0) {
            GCD = gcd(a[i], GCD);
            if (GCD == 0) {
                printf("INF");
                return 0;
            }
        }
        else GCD = a[i];
    }
    dp[0] = 1;
    for (int i= 0; i < n; i++) {
        for (int j = 0; j < 10005; j++) {
            if (dp[j]) dp[j + a[i]] = 1;
        }
    }
    int cnt = 0;
    for (int i = 1; i < 10005; i++)
        if (!dp[i]) cnt++;
    cout << cnt << endl;
    return 0;
}


2024/1/18 17:33
加载中...