MiCode108 猜数字
Description
相传,十八世纪的数学家喜欢玩一种猜数字的小游戏,规则如下: 首先裁判选定一个正整数数字 N (2 \leq N \leq 200)N(2≤N≤200),然后选择两个不同的整数X, Y (1 \leq X \le Y \leq N)X,Y(1≤X≤Y≤N) 裁判告诉玩家S这两个数字的和;告诉玩家P这两个数字的乘积 由玩家S开始,双方依次告诉裁判自己是否知道X, Y分别是多少,如果有一方知道,那么游戏就结束了!
例如,裁判先选定N = 10N=10并将NN的值告诉玩家,然后从1~N中选择X = 3, Y = 6X=3,Y=6,并将它们的总和9告诉给玩家S,将它们的乘积18告诉给玩家P:
玩家S:“我不知道这些数字”
玩家P:“我不知道这些数字”
玩家S:“我不知道这些数字”
玩家P:“我不知道这些数字”
玩家S:“哦,我知道这些数字了,他们是3和6”
数学家们都非常的聪明,他们总能用最少的次数推断出这些数字。
现在给定N和M (0 \leq M \leq 100)(0≤M≤100),M为玩家回答“我不知道这些数字”的次数,请你给出裁判选择的X,Y的组合有多少种?
Solution
这么长时间终于做出来了好开心.
哈哈, 请教的群里的大佬们, 看了他们的对话以及有dl友情提供了一个做法
鬼谷子问题
mPng
Code
#include <set>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include<ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
const int N = 50005;
set<pair<int, int> > sum[405], mul[N];
int main () {
int n, m;
while (scanf("%d,%d", &n, &m) == 2) {
for (int i = 1; i <= n; i += 1)
for (int j = i + 1; j <= n; j += 1) if (i != j)
sum[i + j].insert(make_pair(i, j)),
mul[i * j].insert(make_pair(i, j));
int now_player = 1;
for (int i = 0; i < m; i += 1, now_player ^= 1) {
if (now_player & 1) {
for (int j = 1; j <= n + n; j += 1)
if (sum[j].size() == 1) {
pair<int, int> Pair = *sum[j].begin();
sum[j].erase(sum[j].begin());
mul[Pair.first * Pair.second].erase(mul[Pair.first * Pair.second].find(Pair));
}
} else {
for (int j = 1; j <= n * n; j += 1)
if (mul[j].size() == 1) {
pair<int, int> Pair = *mul[j].begin();
mul[j].erase(mul[j].begin());
sum[Pair.first + Pair.second].erase(sum[Pair.first + Pair.second].find(Pair));
}
}
}
int res = 0;
if (now_player)
for (int i = 1; i < n + n; i += 1)
if (sum[i].size() == 1) res += 1;
if (not now_player)
for (int i = 1; i < n * n; i += 1)
if (mul[i].size() == 1) res += 1;
for (int i = 1; i < n + n; i += 1) sum[i].clear();
for (int j = 1; j < n * n; j += 1) mul[j].clear();
printf("%d\n", res);
}
return 0;
}
MiCode108 猜数字的更多相关文章
- C语言猜数字游戏
猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- java 猜数字游戏
作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
- python学习笔记 ——python写的猜数字游戏 002
from sys import exit import random def Arrfor(str): #CONTST = CONTST + 1 artificial = input("请输 ...
- Python小游戏之猜数字
最近师兄师姐毕业,各种酒席,酒席上最常玩的一个游戏就是猜数字,游戏规则如下: 出题人在手机上输入一个0-100之间的数字,其它人轮流猜这个数字,如果你不幸猜中则要罚酒一杯.每次猜数字,出题人都要缩小范 ...
- 【Qt】2.4 做一个“猜数字”的游戏
使用对话框和Qt设计师来实现一个相当简单的小游戏.同时将通过这个程序来看布局的隐藏和显示是如何来影响窗口界面的变化的. 新建一个Qt项目,把Qt Creator默认给的mainwindow.h.mai ...
- hihocoder 1169 猜数字
传送门 时间限制:10000ms 单点时限:5000ms 内存限制:256MB 描述 你正在和小冰玩一个猜数字的游戏.小冰首先生成一个长为N的整数序列A1, A2, …, AN.在每一轮游戏中,小冰会 ...
随机推荐
- BZOJ5322:[JXOI2018]排序问题——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5322 https://loj.ac/problem/2543 <-可以看数据,要没有这数据我 ...
- ContestHunter暑假欢乐赛 SRM 04
逃了一场SRM(躺 A题可以看成0点到1点,有p的几率从0到1,1-p几率不动,求0到1的期望步数.很显然概率是不降序列数/n!,然后列个方程E[0] = E[0] * (1 - p) + 1,解得E ...
- X day4
题目 官方题解 T1: 单调栈,单调队列因为认为考场上会写崩所以写了一个十分暴力的方法(线段树) 然后做一做区间覆盖即可 #include<iostream> #include<cs ...
- [bzoj 1594]猜数游戏
主要是怎么处理矛盾 矛盾的条件有$2$种: 第一种是当把所有相等的$a$都全部找到后,他们并没有全联通,所以矛盾,因为没有两个是相同的 第二种是在2组$(l,r,a)$,$(l1,r1,a1)$中,$ ...
- Linux之poll与select20160619
使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的访问,这两个系统调用最终又会引发设备驱动中的poll()函数被执行 如果当前不可读(先调用驱动.p ...
- JavaScript定义类与对象的一些方法
最近偶然碰到有朋友问我"hoisting"的问题.即在js里所有变量的声明都是置顶的,而赋值则是在之后发生的.可以看看这个例子: 1 var a = 'global'; 2 (fu ...
- node.js 与java 的主要的区别是什么
node.js 与java都是服务器语言,但是两者存在很大区别:(1)Node.js比Java更快 :node.js开发快,运行的效率也算比较高,但是如果项目大了就容易乱,而且javascript不是 ...
- 使用Spring Animation的API创建动画
pring Animation 是一种特殊的动画曲线,自从 iOS 7 开始被广泛应用在系统动画中. Spring Animation 是Linear(线性即匀速)动画.Ease-out(即动画减速地 ...
- bzoj 1100 [POI2007]对称轴osi manacher
[POI2007]对称轴osi Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 771 Solved: 307[Submit][Status][Dis ...
- POJ 2289 最大流
Jamie's Contact Groups Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 7624 Accepted: ...