結果
問題 | No.321 (P,Q)-サンタと街の子供たち |
ユーザー |
![]() |
提出日時 | 2018-09-15 18:48:09 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 26 ms / 2,000 ms |
コード長 | 1,109 bytes |
コンパイル時間 | 1,110 ms |
コンパイル使用メモリ | 160,456 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-18 07:09:02 |
合計ジャッジ時間 | 2,882 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 41 |
ソースコード
#include "bits/stdc++.h" using namespace std; #define ll long long int #define rep(i,n) for( int i = 0; i < n; i++ ) #define rrep(i,n) for( int i = n; i >= 0; i-- ) #define REP(i,s,t) for( int i = s; i <= t; i++ ) #define RREP(i,s,t) for( int i = s; i >= t; i-- ) #define dump(x) cerr << #x << " = " << (x) << endl; #define INF 2000000000 #define mod 1000000007 #define INF2 1000000000000000000 #define int long long int gcd(int a, int b) { if (b > a) return gcd(b, a); else if (b == 0) return a; else return gcd(b, a % b); } signed main(void) { cin.tie(0); ios::sync_with_stdio(false); int P, Q; cin >> P >> Q; if (P < Q) swap(P, Q); int X[100010], Y[100010]; int N; cin >> N; rep(i, N) cin >> X[i] >> Y[i]; int ans = 0; if (P) { int G = gcd(P, Q); P /= G, Q /= G; if ((P + Q) % 2) { rep(i, N) if (X[i] % G == 0 && Y[i] % G == 0) ans++; } else { rep(i, N) if (X[i] % G == 0 && Y[i] % G == 0) { X[i] /= G, Y[i] /= G; if ((X[i] + Y[i]) % 2 == 0) ans++; } } } else { rep(i, N) if (X[i] == 0 && Y[i] == 0) ans++; } cout << ans << endl; return 0; }