千万不要被长长的题目意思迷惑,题目大意就是说,判断一对数p,q是不是只有8个因子,是则输出“P”,否则输出“C”。
整个题目只有这个条件 Suppose m*m + n*n > 0,m, n is a divisor of p,q. if and only if the integer m*m+ n*n is a common divisor of m*p+n*q and m*q-n*p.有用。
意思是判断m*m+ n*n是否为m*p+n*q 与 m*q-n*p的因子。记得写m*m+ n*n=0的情况。
因为m与n在【-200,200】,所以用暴力就好。
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int p,q;
int num=0;
int a,b,c;
scanf("%d%d",&p,&q);
for(int m=-200; m<200; m++)
{
for(int n=-200; n<200; n++)
{
c=m*m+n*n;
if(c==0)
continue;
a=m*p+n*q;
b=m*q-n*p;
if(a%c==0&&b%c==0)
num++;
}
}
if(num==8)
printf("P\n");
else
printf("C\n");
}
return 0;
}