ACM交互题
Posted KaaaterinaX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM交互题相关的知识,希望对你有一定的参考价值。
神奇交互题。
交互题的意思大概就是你向系统提出询问,然后系统会给出答案,在有限的询问次数中得到题目要求的答案。
题目解析:
因为隐藏的数字在[2,100]之间,所以这些数的非1或本身的因子只会出现在[2,50]中。
所以解法就是打表[2,50]的素数,依次输出询问,如果得到“yes”的次数多于两次,那么这个数不是素数。
但是要注意特殊判断几个素数的平方(4,9,25,49)。
ac代码:
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <queue>
#include <stack>
#include <set>
//#include <unordered_set>
#include <string.h>
#include <map>
//#include <unordered_map>
#include <stdlib.h>
#include <time.h>
#include <vector>
#include <deque>
#define YES "YES"
#define NO "NO"
#define INF 0x3f3f3f3f
#define FAST ios::sync_with_stdio(false)
#define ll long long
#define pb push_back
#define endl '\\n'
#define eps const double eps=1e-6
using namespace std;
//---------------------------------------------------//
template<typename T>inline void read(T &x){
x=0;
char c=getchar();
ll f=1;
if(c>'9'||c<'0'){
if(c=='-'){
f=-1;
}
c=getchar();
}
while(c<='9'&&c>='0'){
x=(x<<1)+(x<<3)+c-'0';
c=getchar();
}
x*=f;
}
template<typename T> inline void write(T x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9){
write(x/10);
}
putchar(x%10+'0');
}
//_____________________________________________________//
int prim[30];
int cnt=0;
int main(){
for(int i=2;i<=50;i++){
int flag=0;
for(int j=2;j<i;j++){
if(i%j==0){
flag=1;
break;
}
}
if(flag==0){
prim[++cnt]=i;
}
}
prim[++cnt]=4;
prim[++cnt]=9;
prim[++cnt]=25;
prim[++cnt]=49;
//相当于在评测机里找答案
string s;
int cc=0;
for(int i=1;i<=cnt;i++){
cout<<prim[i]<<endl;
cin>>s;
if(s=="yes"){
cc++;
}
}
if(cc>=2){
cout<<"composite";
}
else{
cout<<"prime";
}
}
以上是关于ACM交互题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?
BUCTOJ - 2023上半年ACM&蓝桥杯每周训练题-1-A~K题C++Python双语版
BUCTOJ - 2023上半年ACM&蓝桥杯每周训练题-1-A~K题C++Python双语版