codeforces 1167B Lost Numbers"/>
codeforces 1167B Lost Numbers
传送门:
题意:
交互题:现在你有6个数4, 8, 15, 16, 23, 42组成的某种组合,你可以询问系统四次,每次询问的格式为?i j
系统会回复你ai*aj的值,问你这个组合是哪种,有解且解是唯一的
题解:
交互题技巧,cin,cout可以自动刷新,而scanf,printf则需要手动用fflush(stdout)来刷新
根据观察我们可以发现,这六个数两两乘积不相等,所以a1*a2 a2*a3这样的解是唯一的,并且只有六个数,我们用next_permatation全排列函数可以得到结果
代码:
/*** ┏┓ ┏┓* ┏┛┗━━━━━━━┛┗━━━┓* ┃ ┃ * ┃ ━ ┃* ┃ > < ┃* ┃ ┃* ┃... ⌒ ... ┃* ┃ ┃* ┗━┓ ┏━┛* ┃ ┃ Code is far away from bug with the animal protecting * ┃ ┃ 神兽保佑,代码无bug* ┃ ┃ * ┃ ┃ * ┃ ┃* ┃ ┃ * ┃ ┗━━━┓* ┃ ┣┓* ┃ ┏┛* ┗┓┓┏━┳┓┏┛* ┃┫┫ ┃┫┫* ┗┻┛ ┗┻┛*/
// warm heart, wagging tail,and a smile just for you!
//
// _ooOoo_
// o8888888o
// 88" . "88
// (| -_- |)
// O\ = /O
// ____/`---'\____
// .' \| |// `.
// / \||| : |||// \
// / _||||| -:- |||||- \
// | | \\ - /// | |
// | \_| ''\---/'' | |
// \ .-\__ `-` ___/-. /
// ___`. .' /--.--\ `. . __
// ."" '< `.___\_<|>_/___.' >'"".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `-. \_ __\ /__ _/ .-` / /
// ======`-.____`-.___\_____/___.-`____.-'======
// `=---='
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// 佛祖保佑 永无BUG
#include <set>
#include <map>
#include <deque>
#include <queue>
#include <stack>
#include <cmath>
#include <ctime>
#include <bitset>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;typedef long long LL;
typedef pair<LL, LL> pLL;
typedef pair<LL, int> pLi;
typedef pair<int, LL> pil;;
typedef pair<int, int> pii;
typedef unsigned long long uLL;
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define bug printf("*********\n")
#define FIN freopen("input.txt","r",stdin);
#define FON freopen("output.txt","w+",stdout);
#define IO ios::sync_with_stdio(false),cin.tie(0)
#define debug1(x) cout<<"["<<#x<<" "<<(x)<<"]\n"
#define debug2(x,y) cout<<"["<<#x<<" "<<(x)<<" "<<#y<<" "<<(y)<<"]\n"
#define debug3(x,y,z) cout<<"["<<#x<<" "<<(x)<<" "<<#y<<" "<<(y)<<" "<<#z<<" "<<z<<"]\n"const double eps = 1e-8;
const int mod = 1e9 + 7;
const int maxn = 3e5 + 5;
const int INF = 0x3f3f3f3f;
const LL INFLL = 0x3f3f3f3f3f3f3f3f;int main() {
#ifndef ONLINE_JUDGEFIN
#endifvector<int> v {4, 8, 15, 16, 23, 42};int a, b, c, d;cout << "? 1 2" << endl;cin >> a;cout << "? 2 3" << endl;cin >> b;cout << "? 4 5" << endl;cin >> c;cout << "? 5 6" << endl;cin >> d;do {if(v[0]*v[1] == a && v[1]*v[2] == b && v[3]*v[4] == c && v[4]*v[5] == d) {cout<<"! ";for(auto it : v) {cout<<it<<" ";}break;}} while (next_permutation(v.begin(), v.end()));cout<<endl;return 0;
}
转载于:.html
更多推荐
codeforces 1167B Lost Numbers
发布评论