constint P = 19260817; int a, b; intextendedGCD(int m, int n, int &x, int &y){//扩展欧几里得算法,套用模板 if (!n) { x = 1, y = 0; return m; }
int d = extendedGCD(n, m % n, y, x); y -= m / n * x; return d; }
intmain(){ scanf("%d %d",&a &b); int x, y; int d = extendedGCD(b, P, x, y); if (a % d) puts("Angry!"); else printf("%ld\n", ((long) x * a / d % P + P) % P); }
classLinearSieve { public: vector<longlongint> primes; vector<bool> isComposite; LinearSieve(longlongint n, longlongint m) { isComposite.assign(m + 1, false); for (longlongint i = n; i <= m; i++) { if (!isComposite[i]) { primes.push_back(i); } for (longlongint p : primes) { if (i * p > m) break; isComposite[i * p] = true; if (i % p == 0) break; } } } };
longlongread(){//快速读入 longlong s = 0, f = 1; char ch = getchar();
while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { s = s * 10 + ch - '0'; ch = getchar(); } return s * f; }
intmain(){ longlongint l, r; l = read(); r = read(); if (l < 2) l = 2; LinearSieve p(l, r); printf("%lld\n", p.primes.size()); return0; }