当前位置: 代码迷 >> 综合 >> D - Discombobulator 3000 Gym - 102946D
  详细解决方案

D - Discombobulator 3000 Gym - 102946D

热度:29   发布时间:2023-11-29 20:38:05.0

题目链接
题意:我们每输出两个值,然后输入一个值,输入的值是告诉们两个位置的值中谁最大。要求在不超过2*n的次数内找到mod值是多少。
题解:我们先固定a数组中两个值,因为两个值是相邻的,所以我们在b中遍历寻找的时候一定是同时找到两个相等的值,然后我们交叉比较两个值,输出即可。
题解比较难描述,代码很简单。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
    int n;cin>>n;int i=0,j=1;while(1){
    int x,y;printf("? %d %d\n",0,j);cin>>x;printf("? %d %d\n",1,i);cin>>y;if(x==y) break;i=(i+1)%n;j=(j+1)%n;}printf("! %d\n",i);return 0;
}
  相关解决方案