Codechef GUESSPRM Guess the Prime!

Posted cjoiershiina-mashiro

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codechef GUESSPRM Guess the Prime!相关的知识,希望对你有一定的参考价值。

Link
先询问(2^{15}),假设交互库回答的是(t),那么(x=2^{30}-t)满足(P|x)
不难发现(P=2Leftrightarrow t=0),因此我们先特判此种情况。
此时(P)一定是奇素数,所以我们去掉(x)(2)因子。
那么此时(frac{x+1}2equivfrac12pmod P),我们询问(frac{x+1}2)得到(y),那么(yequivfrac14pmod P)
(Pequiv1pmod 4),那么(y=frac{3P+1}4,P=frac{4y-1}3)
(Pequiv3pmod 4),那么(y=frac{P+1}4,P=4y-1)
显然(frac{4y-1}3,4y-1)不可能同时为素数,判断一下就行了。

#include<cctype>
#include<cstdio>
using u32=unsigned int;
char str[10];
u32 read(){u32 x=0,c=getchar();while(isspace(c))c=getchar();while(isdigit(c))(x*=10)+=c&15,c=getchar();return x;}
u32 ask(u32 x){return printf("1 %u
",x),fflush(stdout),read();}
void answer(u32 x){printf("2 %u
",x),fflush(stdout),scanf("%s",str);}
int main()
{
    for(u32 T=read(),x,y;T;--T)
    {
	x=ask(1<<15);
	if(!x){answer(2);continue;}
	for(x=(1<<30)-x;~x&1;x>>=1);
	y=ask((x+1)/2),(4*y-1)%3||y==1? answer(4*y-1):answer((4*y-1)/3);
    }
}







以上是关于Codechef GUESSPRM Guess the Prime!的主要内容,如果未能解决你的问题,请参考以下文章

[codechef MEXDIV]Mex division

python中的spoj或codechef格式命令行输入

Codechef RIN 「Codechef14DEC」Course Selection 最小割离散变量模型

codechef AUG17 T4 Palindromic Game

codechef [snackdown2017 Onsite Final] AND Graph

Codechef WEASELTX