codeforces B Lost Numbers
程序员文章站
2022-05-09 16:18:27
...
题目连接:https://codeforces.com/contest/1167/problem/B
题目大意:给你6个数,这6个数已经确定且互不相同,然后允许你问四次乘积(即询问i和j两个位置的乘积),通过这四次结果计算出这6个数的顺序。
题解思路:分别询问(1,2),(1,3),(1,4),(1,5)这四个结果。通过前两个结果,我们进行暴力求解,可以得到前三个数。然后根据这些结果就可以求出第四个、第五个数了。最后一个数用总和减去已经得到的数即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int num[6] = {16,23,4,8,15,42};
int r;
void ask(int i, int j){
cout<<"? "<<i<<" "<<j<<endl;
fflush(stdout);
cin>>r;
}
int main(){
ask(1,2);
int a, b, c, d, e, f;
for(int i = 0; i < 6; i++){
for(int j = 0; j < i;j++){
if(num[i] * num[j] == r){
a = num[i];
b = num[j];
break;
}
}
}
ask(1,3);
bool flag = false;
for(int i = 0; i < 6; i++){
if(num[i] != a && num[i]*a == r){
flag = true;break;
}
}
if(!flag){int temp = a; a = b; b = temp;}
c = r / a;
ask(1,4);d = r / a;
ask(1,5);e = r / a;
f = 108 - (a+b+c+d+e);
cout<<"! "<<a<<" "<<b<<" ";
cout<<c<<" "<<d<<" ";
cout<<e<<" "<<f<<endl;
}
附:由于6! = 720,所以可以直接暴力全排列得出结果。
推荐阅读
-
codeforces 260 div2 A,B,C_html/css_WEB-ITnose
-
Codeforces Round #262 (Div. 2) A,B,C_html/css_WEB-ITnose
-
Codeforces Round #256 (Div. 2) A/B/C/D_html/css_WEB-ITnose
-
Codeforces Beta Round #4 (Div. 2 Only) B. Before an Exam_html/css_WEB-ITnose
-
Codeforces Round #253 (Div. 1)-A,B_html/css_WEB-ITnose
-
Codeforces Round #262 (Div. 2)-A,B,C,D_html/css_WEB-ITnose
-
Codeforces Round #266 (Div. 2) B. Wonder Room_html/css_WEB-ITnose
-
codeforces Round #259(div2) B解题报告
-
Codeforces Round #281 (Div. 2) 解题报告 A.B.C.D._html/css_WEB-ITnose
-
Codeforces Round #250 (Div. 1)B(排序+并查集)_html/css_WEB-ITnose