Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MOD1 = 29209;
- const int MOD2 = 1e9 + 7;
- const int MOD3 = 1e9 + 9;
- const int N = 1e5 + 100;
- long long bigMod (long long a, long long e, long long mod) {
- long long ret = 1;
- while (e) {
- if (e & 1) ret = (ret * a) % mod;
- a = (a * a) % mod;
- e >>= 1;
- }
- return ret;
- }
- long long toInt (string s) {
- bool flag = 0;
- if (s[0] == '-') s.erase(s.begin()), flag = 1;
- long long ret = 0;
- for (int j = 0; j < s.size(); j++) {
- ret *= 10;
- ret += (s[j] - '0');
- }
- if (flag) ret = -ret;
- return ret;
- }
- int n;
- long long k;
- string s;
- int unknown = 0;
- long long coeff[N];
- int main (int argc, char const *argv[]) {
- freopen("input.txt", "r", stdin);
- cin.tie(0);
- ios_base::sync_with_stdio(0);
- cin >> n >> k;
- int pos = 0;
- for (int i = 0; i <= n; i++) {
- cin >> s;
- if (s[0] == '?') ++unknown;
- else coeff[pos++] = toInt(s);
- }
- if (unknown) {
- if (n & 1) cout << "Yes\n";
- else cout << "No\n";
- } else {
- long long value1 = 0, value2 = 0, value3 = 0;
- long long pow1 = 1, pow2 = 1, pow3 = 1;
- for (int i = 0; i < pos; i++) {
- value1 += coeff[i] * pow1, value1 %= MOD1;
- value2 += coeff[i] * pow2, value2 %= MOD2;
- value3 += coeff[i] * pow3, value3 %= MOD3;
- pow1 *= k, pow2 *= k, pow3 *= k;
- pow1 %= MOD1, pow2 %= MOD2, pow3 %= MOD3;
- }
- if (value1 == 0 and value2 == 0 and value3 == 0) cout << "Yes\n";
- else cout << "No\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement