Submission #19517

#TimeUsernameProblemLanguageResultExecution timeMemory
19517min050820Σ (kriii4_P2)C++14
100 / 100
21 ms1720 KiB
#include <iostream> using namespace std; const long long mod=1000000007; // dp[n] = N ^ (2^n) long long pow_dpTable[100]; long long pow(long long N,long long P){ N%=mod; pow_dpTable[0]=N; long long mask=1; long long result=1; int i; for(i=1;mask <= P;i++){ pow_dpTable[i]=(pow_dpTable[i-1] * pow_dpTable[i-1])%mod; mask<<=1; } mask=1; for(i=0;mask <= P;i++){ if(P&mask){ result = (result * pow_dpTable[i]) % mod; } mask<<=1; } return result; } long long answer=0; int p; long long gcd(long long a, long long b) { while (b != 0) { a %= b; a ^= b; b ^= a; a ^= b; } return a; } long long getNum(long long S,long long U){ // Side Num long long gcdOfSU=gcd(S,U); long long mS=S / gcdOfSU; long long mU=U / gcdOfSU; long long mmS=pow(mS,mod-2); long long ans=(mU * mmS) % mod; return ans; } int main() { cin >> p; for(int i=0;i<p;i++){ long long side,sumSide; cin >> side >> sumSide; answer = (answer + getNum(side,sumSide)) % mod; } cout << answer; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...