fork download
  1. #include<bits/stdc++.h>
  2. #include<stdio.h>
  3. using namespace std;
  4.  
  5. #define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  6. #define MAX 100050
  7.  
  8. #define ll long long
  9. #define ld long double
  10. #define lli long long int
  11.  
  12. #define pb push_back
  13. #define INF 100000000000000
  14. #define mod 1000000007
  15.  
  16. // trignometric function always give value in Radians only
  17. #define PI acos(-1) //3.1415926535897932384626433832795028
  18. #define dsin(degree) sin(degree*(PI/180.0))
  19. #define dcos(degree) cos(degree*(PI/180.0))
  20. #define dtan(degree) tan(degree*(PI/180.0))
  21.  
  22. #define rsin(radian) sin(radian)
  23. #define rcos(radian) cos(radian)
  24. #define rtan(radian) tan(radian)
  25.  
  26. #define counttrailingzeroes(n) __builtin_ctzll(n)
  27. #define countsetbits(n) __builtin_popcountll(n)
  28.  
  29. #define mem0(a) memset(a,0,sizeof(a))
  30. #define mem1(a) memset(a,-1,sizeof(a))
  31. #define memf(a) memset(a,false,sizeof(a))
  32.  
  33. #define loop(i,n) for (lli i = 0; i < n; i++)
  34. #define FOR(i,a,b) for (lli i = a; i < b; i++)
  35.  
  36. #define all(v) v.begin(),v.end()
  37. #define rall(v) v.rbegin(),v.rend()
  38. #define makeuniq(v) v.resize(unique(all(v)) - v.begin()); //only uniq element in vector after this
  39. #define sz(x) int(x.size())
  40. #define F first
  41. #define S second
  42.  
  43. #define mii map<lli,lli>
  44.  
  45. #define pii pair<lli,lli>
  46.  
  47. #define vi vector<lli>
  48. #define vvi vector<vi>
  49. #define vpi vector<pii>
  50. #define vbool vector<bool>
  51.  
  52. #define seti set<lli>
  53.  
  54. #define gcd(a,b) __gcd((a),(b))
  55. #define lcm(a,b) (a/gcd(a,b))*b
  56. #define abs(x) ((x < 0)?-(x):x)
  57. #define isvowel(v) (0x208222>>(v&0x1f))&1
  58.  
  59. #define endl '\n'
  60.  
  61. template <typename Head>
  62. void print(Head&& head)
  63. {
  64. cout<<head<<endl;
  65. }
  66. template <typename Head, typename... Tail>
  67. void print(Head&& head, Tail... tail)
  68. {
  69. cout<<head<<" ";
  70. print(tail...);
  71. }
  72.  
  73. #define scanarr(a,n) for(lli i=0;i<n;i++) cin>>a[i];
  74. #define scanvec(a,n) for(lli i=0;i<n;i++){ lli x ; cin>>x; a.pb(x);}
  75.  
  76. #define printarr(a,n) for(lli i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl;
  77. #define printvec(vec) for(auto xt : vec) cout<<xt<<" "; cout<<"\n";
  78.  
  79. #define FD(N) fixed<<setprecision(N)
  80.  
  81. #define deb(x) cout<<#x<<" "<<x<<endl;
  82.  
  83. /*
  84. 1D vector - vi dp(n,value);
  85. */
  86.  
  87. lli mceil(lli a,lli b){ return(a/b + (a%b != 0)); }
  88.  
  89. lli mfloor(lli a,lli b){ return(a/b); }
  90.  
  91. ll modmul(ll a, ll b,ll MOD = mod) {
  92. return ((a%MOD) * (b%MOD)) % MOD;
  93. }
  94.  
  95. ll modadd(ll a, ll b,ll MOD = mod){
  96. return((a%MOD)+(b%MOD)+MOD)%MOD;
  97. }
  98.  
  99. ll modsub(ll a, ll b,ll MOD = mod){
  100. return((a%MOD) - (b%MOD) + MOD)%MOD;
  101. }
  102.  
  103. lli fastexpo(lli a,lli b ,lli MOD = mod){
  104. a = a%MOD;
  105. lli ans=1;
  106. while(b){
  107. if(b&1)
  108. ans=(ans*1ll*a)%MOD;
  109. a=(a*1ll*a)%MOD;
  110. b=b/2;
  111. }
  112. return ans;
  113. }
  114.  
  115.  
  116. vector<int>all_div[200001];
  117. void alldivisors(){
  118. for(int i=1;i<=200000;++i){
  119. for(int j=i;j<=200000;j+=i)
  120. all_div[j].pb(i);
  121. }
  122. }
  123.  
  124.  
  125. bool ispower2(lli n){
  126. return(n and (n&(n-1))==0 );
  127. }
  128.  
  129. mii mp;
  130. void fun(lli n,lli pw)
  131. {
  132. lli cnt=0;
  133. while(n%2==0)
  134. {
  135. cnt++;
  136. n/=2;
  137. }
  138. if(cnt)
  139. mp[2]=modadd(mp[2] , cnt*pw);
  140. for(lli i=3;i*i<=n;i++)
  141. {
  142. cnt=0;
  143. while(n%i==0)
  144. {
  145. cnt++;
  146. n/=i;
  147. }
  148. if(cnt)
  149. mp[i]=modadd(mp[i] , cnt*pw);
  150. }
  151. if(n>1)
  152. mp[n]=modadd(mp[n] ,pw);
  153. }
  154.  
  155. int main(){
  156. fastio
  157. lli t=1;
  158. //cin>>t;
  159. while(t--)
  160. {
  161. lli n;
  162. cin>>n;
  163. lli ans = 1;
  164. loop(i,n)
  165. {
  166. lli x,y;
  167. cin>>x>>y;
  168.  
  169. fun(x,y);
  170.  
  171. }
  172.  
  173. for(auto xt : mp)
  174. {
  175. lli sum=0;
  176. lli terms = xt.S/2 + 1;
  177. lli num = modsub(fastexpo(fastexpo(xt.F,2),terms) , 1);
  178. lli deno = modsub(fastexpo(xt.F,2) , 1);
  179. sum = modmul(num,fastexpo(deno,mod-2));
  180. ans = modmul(ans,sum);
  181. }
  182.  
  183.  
  184. print(ans);
  185. }
  186.  
  187. return 0;
  188. }
  189.  
  190.  
Success #stdin #stdout 0.01s 8208KB
stdin
2
2 2
3 1
stdout
5