diff options
author | crupest <crupest@outlook.com> | 2021-03-10 09:21:46 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-03-10 09:21:46 +0800 |
commit | cd58d7e2703b9d96e7466ae77502e29f22963891 (patch) | |
tree | c97d2dd1fd798cfb36197524af17d639ce564216 | |
parent | c4975c854cb5365872c4c9707deb659e0d2634eb (diff) | |
download | crupest-cd58d7e2703b9d96e7466ae77502e29f22963891.tar.gz crupest-cd58d7e2703b9d96e7466ae77502e29f22963891.tar.bz2 crupest-cd58d7e2703b9d96e7466ae77502e29f22963891.zip |
import(solutions): Add problem 1226.
-rw-r--r-- | works/solutions/acwing/1226.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/works/solutions/acwing/1226.cpp b/works/solutions/acwing/1226.cpp new file mode 100644 index 0000000..cbfea98 --- /dev/null +++ b/works/solutions/acwing/1226.cpp @@ -0,0 +1,55 @@ +#include <iostream> + +int gcd(int a, int b) { + if (b == 0) + return a; + return gcd(b, a % b); +} + +int N; +int A[110]; + +const int M = 10000; + +bool f[M + 10]; + +int main() { + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin >> N; + + for (int i = 1; i <= N; i++) { + std::cin >> A[i]; + } + + int a = A[1]; + + for (int i = 2; i <= N; i++) { + a = gcd(a, A[i]); + } + + if (a != 1) { + std::cout << "INF"; + return 0; + } + + f[0] = true; + + for (int i = 1; i <= N; i++) { + for (int w = A[i]; w <= M; w++) { + f[w] = f[w] || f[w - A[i]]; + } + } + + int count = 0; + + for (int i = 1; i <= M; i++) { + if (f[i] == false) + count++; + } + + std::cout << count; + + return 0; +} |