博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MiCode108 猜数字
阅读量:4703 次
发布时间:2019-06-10

本文共 1910 字,大约阅读时间需要 6 分钟。

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友情提供了一个做法

Code

#include 
#include
#include
#include
#include
#include
using namespace std;using namespace __gnu_pbds;const int N = 50005;set
> 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
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
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;}

转载于:https://www.cnblogs.com/qdscwyy/p/9812600.html

你可能感兴趣的文章
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>
数据访问 投票习题
查看>>
cnblog!i'm coming!
查看>>
使用点符号代替溢出的文本
查看>>
fatal: remote origin already exists.
查看>>
LeetCode 242. Valid Anagram
查看>>
JSP表单提交乱码
查看>>
如何适应现代雇佣关系
查看>>
团队项目(第五周)
查看>>
SQL 优化经验总结34条
查看>>
开源 视频会议 收藏
查看>>
核心J2EE模式 - 截取过滤器
查看>>
.net开源CMS
查看>>
JdbcTemplate
查看>>
第一次使用maven记录
查看>>
SharePoint服务器端对象模型 之 使用CAML进展数据查询
查看>>