CF1549A Gregor and Cryptography 题解
题目大意
给出一个质数 \(P\ (5\le P \le 10^9)\) ,求两个整数 \(a,b\) 满足 \(2\le a<b \le P\) 并且 \(P \bmod a=P\bmod b\),多组数据,数据数量不超过 \(1000\)。
解析
第一眼反应是找到一个数字 \(x\) 使 \(P-x\) 至少有两个在 \([\max(2,x),P]\) 之间的因数。
然后我们发现,由于 \(5\le P\) 并且 \(P\) 是质数所以 \(P\) 一定是奇数,所以当 \(x=1\) 的时候就有两个因数,分别是 \(2\) 和 \(P-1\)。
代码:
#include<cstdio>
using namespace std;
int T,x;
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&x);
printf("%d %d\n",2,x-1);
}
return 0;
}