SGU 117.Counting
时间限制: 0.25 sec.
空间限制: 4096 KB
题目大意:
给你n,m,k(都小于10001),和 n 个数,求这n个数中有多少个数的m次幂能够整除k。(即 n i^m % k==0)。
solution:
快速幂取余。
参考代码
1 #include <iostream> 2 using namespace std; 3 4 __int64 Quikpower(__int64 a,__int64 d,__int64 n){ 5 __int64 k = 1; 6 while ( d > 0){ 7 if (d & 1) k = (k*a)%n; 8 a=(a*a)%n; 9 d>>=1; 10 } 11 return k; 12 } 13 int n,m,k,ans,x; 14 int main(){ 15 cin>>n>>m>>k; 16 for(int i=1;i<=n;i++){ 17 cin>>x; 18 if(Quikpower(x,m,k)==0) ans++; 19 } 20 cout<<ans; 21 return 0; 22 }