結果
| 問題 | 
                            No.2324 Two Countries within UEC
                             | 
                    
| コンテスト | |
| ユーザー | 
                             bluebery1001
                         | 
                    
| 提出日時 | 2023-05-28 15:20:17 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,643 bytes | 
| コンパイル時間 | 1,792 ms | 
| コンパイル使用メモリ | 168,600 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-12-27 06:04:02 | 
| 合計ジャッジ時間 | 8,594 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 | 
| other | AC * 30 WA * 11 | 
ソースコード
using namespace std;
#include<bits/stdc++.h>
void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); cout<<fixed<<setprecision(15);_main(); return 0;}
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
typedef long long ll;
typedef long double ld;
template<class ll> inline bool chmax(ll& a, ll b) { if (a < b) { a = b; return 1; } return 0; }
template<class ll> inline bool chmin(ll& a, ll b) { if (a > b) { a = b; return 1; } return 0; }
#define rep(i, star,fini) for (int i = star; i < fini; i++)
#define ALL(x) std::begin(x), std::end(x)
#define INF ((1LL<<62)-(1LL<<31))
#define bit(x,i)(((x)>>(i))&1)
long double distance(long double xi,long double yi,long double xj,long double yj){return sqrt(1.0*((xi-xj)*(xi-xj))+1.0*((yi-yj)*(yi-yj)));}
ll n,m,p,q;
long long modpow(long long a, long long n) {
    ll mod = p;
    long long res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}
// a^{-1} mod を計算する
long long modinv(long long a) {
    return modpow(a, p - 2);
}
void _main(){
    cin >> n >> m >> p >> q;
    while (q--)
    {
        ll x,f;cin >> x >> f;
        if(x==1){
            cout<<(m-f+p)/p<<endl;
            continue;
        }
        if(f==0){
            if(x%p==0){
                cout<<m<<endl;
                continue;
            }
            else{
                cout<<m/p<<endl;
                continue;
            }
        }
        ll xwf = (x%p)*modinv(f)%p;
        ll g_xwf = modinv(xwf);
        cout<<max(0ll,m-g_xwf+p)/p-(g_xwf==0)<<endl;
    }
    
}
            
            
            
        
            
bluebery1001