x的取余

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

Sample Input

13 3

Sample Output

4 9
#include<cstdio>

long long ans[1000005];
int main(){
	long long i,p,a,j=0;
	scanf("%lld%lld",&p,&a);
	for(i=0;i<=p;i++){
		if((i%p)*(i%p)%p==a){
			ans[j]=i;
			j++;	
		}
	}
	if(j==0) printf("No Solution\n");
	else {
		for( i=0;i<j;i++){
			printf("%d",ans[i]);
			if(i==j-1) printf("\n");
			else printf(" ");
		}	
	}
	
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/aimNO_1/article/details/81364972