2020牛客暑期多校训练营(第四场)——Basic Gcd Problem
2020-07-21 14:04
471 查看
题目描述
输入描述
The input contains multiple test cases. The first line of input contains one integer T(1≤T≤10^6).
In the following T lines, each line contains two integers ni,ci (1≤ni,ci≤10^6) describing one question.
输出描述
For each test case, output one integer indicating the answer.
输入
[code]2 3 3 10 5
输出
[code]3 25
题目大意
题解
观察公式,fc(x)其实是 c 的若干次方,且指数要尽量大。在最好的情况下,每次只消掉一个质因子。所以 fc (x)=c^x的质因子个数。
AC代码
[code]#pragma GCC optimize(2) #pragma GCC optimize(3) #include<bits/stdc++.h> using namespace std; const long long mod=1e9+7; int T,c,n,a[1000010],prime[500010]; bool number[1000010]; void prime_factor(int x) { if(a[x])return; for(int i=2;i*i<=x;i++) if(x%i==0) { prime_factor(x/i); a[x]=a[x/i]+1; return; } a[x]=1; return; }//质因子个数 long long pow_mod(long long a,long long b) { long long ans=1,base=a%mod; while(b>0) { if(b&1!=0)ans=(ans*base)%mod; base=(base*base)%mod; b>>=1; } return ans; }//带取模的快速幂 int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); // for(int i=2;i<=1000001;i++) // { // if(!number[i])prime[c++]=i; // for(int j=0;j<c&&prime[j]*i<=1000001;j++) // { // number[prime[j]*i]=1; // if(i%prime[j]==0)break; // } // }//素数筛 for(int i=2;i<=1000000;i++)prime_factor(i); cin>>T; while(T--) { cin>>n>>c; cout<<pow_mod(c,a )<<endl; } }
相关文章推荐
- 2020牛客暑期多校训练营(第四场)——HHarder Gcd Problem
- 2020牛客暑期多校训练营(第四场)——I Investigating Legions
- 2020牛客暑期多校训练营(第四场)——AAncient Distance
- 牛客多校第四场 B-Basic Gcd Problem【线性筛+快速幂】
- 2020牛客暑期多校训练营(第四场)
- 2020牛客暑期多校训练营(第六场)
- 牛客多校暑假训练营2020 (第三场) B-【Classical String Problem】
- 2020牛客暑期多校训练营(第七场)
- 2019牛客暑期多校训练营(第四场) K题 number
- 2020牛客暑期多校训练营(第五场)——E Bogo Sort
- 2020牛客暑期多校训练营第六场Harmony Pairs(数位dp)
- 2020牛客暑期多校训练营(第八场)
- 2019牛客暑期多校训练营(第四场) J 题 free
- 2020牛客暑期多校训练营第六场Binary Vector(数学,打表)
- 2020牛客暑期多校训练营(第五场)
- 2020牛客暑期多校训练营(第七场)——I Valuable Forests
- 2019牛客暑期多校训练营 第四场
- 2019牛客暑期多校训练营(第四场)K number
- sequence(线段树+单调栈) (2019牛客暑期多校训练营(第四场))
- 2019牛客暑期多校训练营(第四场)D triples I