#include #include #include #include #include #include #include #define llint long long #define inf 1e18 using namespace std; typedef pair P; llint a, b, c, d; llint n; llint x[100005], y[100005]; llint gcd(llint a, llint b) { if(b == 0) return a; return gcd(b, a%b); } int main(void) { cin >> a >> b >> c >> d; cin >> n; llint det = a*d-b*c; for(int i = 1; i <= n; i++) cin >> x[i] >> y[i]; set

S; if(a == 0 && c == 0){ llint g = gcd(b, d); for(int i = 1; i <= n; i++){ S.insert(make_pair(x[i], y[i]%g)); } cout << S.size() << endl; return 0; } if(b == 0 && d == 0){ llint g = gcd(a, c); for(int i = 1; i <= n; i++){ S.insert(make_pair(x[i]%g, y[i])); } cout << S.size() << endl; return 0; } if(det == 0){ llint gx = gcd(a, c), gy = gcd(b, d); for(int i = 1; i <= n; i++){ llint bunsi = gx*y[i]-gy*x[i], bunbo = gx; //cout << bunsi << " " << bunbo << endl; llint g = gcd(abs(bunsi), abs(bunbo)); S.insert(make_pair(bunsi/g, bunbo/g)); } cout << S.size() << endl; return 0; } for(int i = 1; i <= n; i++){ det = abs(det); llint bunsi1 = x[i]*d-y[i]*c, bunsi2 = a*y[i]-x[i]*b; if(bunsi1 < 0) bunsi1 = det - abs(bunsi1)%det; if(bunsi2 < 0) bunsi2 = det - abs(bunsi2)%det; bunsi1 %= det, bunsi2 %= det; S.insert(make_pair(bunsi1, bunsi2)); } cout << S.size() << endl; return 0; }