1110. Power
Time limit: 0.5 second
Memory limit: 64 MB
Memory limit: 64 MB
You are given the whole numbers
N,
M and
Y. Write a program that will find all whole numbers
X in the interval [0,
M − 1] such that
XN mod
M =
Y.
Input
The input contains a single line with
N,
M and
Y (0 <
N < 999, 1 <
M < 999, 0 <
Y < 999) separated with one space.
Output
Output all numbers
X separated with space on one line. The numbers must be written in ascending order. If no such numbers exist then output −1.
Sample
input | output |
---|---|
2 6 4 | 2 4 |
解析:直接很裸的幂取模运算。
AC代码:
#include <cstdio>
int mod_pow(int x, int n, int m){
int ans = 1;
while(n--){
ans = ans * x % m;
}
return ans;
}
int main(){
int n, m, y, flag;
while(scanf("%d%d%d", &n, &m, &y)==3){
flag = 0;
for(int i=0; i<m; i++){
if(mod_pow(i, n, m) == y){
flag = 1;
printf("%d ", i);
}
}
if(flag) puts("");
else puts("-1");
}
return 0;
}