51Nod 1014 X^2 Mod P
X*X mod P = A,其中P为质数。给出P和A,求<=P的所有X。
Input
两个数P A,中间用空格隔开。(1 <= A < P <= 1000000, P为质数)
Output
输出符合条件的X,且0 <= X <= P,如果有多个,按照升序排列,中间用空格隔开。 如果没有符合条件的X,输出:No Solution
Input示例
13 3
Output示例
4 9
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 #include <algorithm> 5 #include <stdio.h> 6 using namespace std; 7 #define ll long long 8 ll quickm(ll m,ll n,ll p) 9 { 10 ll b=1; 11 while(n){ 12 if(n&1) b=(b*m)%p; 13 n=n>>1; 14 m=(m*m)%p; 15 } 16 return b; 17 } 18 int main() 19 { 20 ll p,a; 21 scanf("%d%d",&p,&a); 22 ll t=0,i; 23 for(i=1;i<=p;i++){ 24 if(quickm(i,2,p)==a){ 25 if(t==0) printf("%d",i); 26 else printf(" %d",i); 27 t++; 28 } 29 } 30 if(t==0) printf("No Solution\n"); 31 else printf("\n"); 32 printf("\n"); 33 return 0; 34 }