目录
一.题目
题目描述
给定n,m,k都是小于10001的正整数,输出给定的n个数中,其m次幂能被k整除的数的个数。
输出满足条件的数的个数。
输入
两行组成,第一行是n,m,k。
第二行是n个正整数,不超过10001.
输出
输出满足条件的数的个数。
样例输入
3 2 50
9 10 11
样例输出
1
二.题解
这道题就是个波尔皮,直接快速幂暴力一波就是答案。
有兴趣的,可以用降幂公式。
三.代码
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define LL long long
int n, m, k, a, ans;
LL qkpow (LL x, int y){
LL sum = 1;
while (y > 0){
if (y % 2 == 1)
sum = sum * x % k;
x = x * x % k;
y /= 2;
}
return sum;
}
int main (){
scanf ("%d %d %d", &n, &m, &k);
while (n --){
scanf ("%d", &a);
if (qkpow (a, m) == 0)
ans ++;
}
printf ("%d\n", ans);
return 0;
}