Central Meridian Number
网上说这是一道数论神题,看他们推了一对公式和证明最终证明出一个简单的判断公式
但是因为数据量小,所以就暴力吧,比赛时还以用最简单直接的方法做题。。。
这个题给了一个蕴涵式
N|((A2)∗B+1) → N|(A2+B) N | ( ( A 2 ) ∗ B + 1 ) → N | ( A 2 + B )
当蕴涵式为真就是YES否则NO
注意蕴涵式为真和为假的条件
只有当前件为1,后件为0是才为假,其他全为真!
code:
#include <bits/stdc++.h>
using namespace std;
int main(){
int t,n,flag;
scanf("%d",&t);
while(t--){
flag = 0;
scanf("%d",&n);
for(int i = 1; i <= 1000; i++){
for(int j = 1; j <= 1000; j++){
if((i * i * j + 1) % n == 0){
if((i * i + j) % n){
flag = 1;
break;
}
}
}
if(flag) break;
}
if(flag) printf("NO\n");
else printf("YES\n");
}
return 0;
}