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;
}

posted @ 2021-08-05 22:02  jiangtaizhe001  阅读(43)  评论(0编辑  收藏  举报