Codeforces 679A Bear and Prime 100

链接:传送门
题意:给你一个隐藏数,这个隐藏数在[2,100]之间,现在最多可以询问20次,每次询问的是这个数是不是隐藏数的底数,是为yes,不是为no,每次询问后都需要flush一下输出缓冲区,最后判断这个数是不是素数。
思路:直接打出50以内的素数表,挨个进行询问,用计数器记录出现的因子个数,如果>1则说明为合数,需要特殊处理4,9,16,25,36,49,例如 49 --> 1 7 49 计数器1,但此数仍为合数。

/*************************************************************************
    > File Name: a.cpp
    > Author:    WArobot 
    > Blog:      http://www.cnblogs.com/WArobot/ 
    > Created Time: 2017年04月18日 星期二 01时19分49秒
 ************************************************************************/

#include<bits/stdc++.h>
using namespace std;

int p[21] = { 2,3,4,5,7,9,11,13,17,19,23,25,29,31,37,41,43,47,49 };
char order[5];

int main(){
	int sum = 0;
	for(int i=0;i<19;i++){
		printf("%d\n",p[i]);
		fflush(stdout);
		scanf("%s",order);
		if(order[0] == 'y')	sum++;
	}
	if(sum>1){
		printf("composite\n");
		fflush(stdout);
	}
	else{
		printf("prime\n");
		fflush(stdout);
	}
	return 0;		
}
posted @ 2017-04-18 18:44  ojnQ  阅读(271)  评论(0编辑  收藏  举报