http://www.51nod.com/Challenge/Problem.html#!#problemId=1014
X*X mod P = A,其中P为质数。给出P和A,求<=P的所有X。
收起
输入
两个数P A,中间用空格隔开。(1 <= A < P <= 1000000, P为质数)
输出
输出符合条件的X,且0 <= X <= P,如果有多个,按照升序排列,中间用空格隔开。 如果没有符合条件的X,输出:No Solution
输入样例
13 3
输出样例
4 9
注意那个long地方,要防止溢出。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
long p,a;
p=cin.nextLong();
a=cin.nextLong();
int flag=0;
for(int i=0;i<p;i++)
{
if((long)i*i%p==a)
{
if(flag==0)
{
System.out.print(i);
flag=1;
}
else if(flag==1)
System.out.println(" "+i);
}
}
if(flag==0)
System.out.println("No Solution");
}
}