🐷大肚肚
CF-63C普及+/提高

猜数字

2.0s💾 256MB

📋 题目描述

你心里想了一个 44 位数让胖球肚来猜,胖球肚每次猜一个数,她猜的数必须是各位数字均不相同且可以有前导 00 ,你告诉她有几个数字的数值和位置都是对的,以及有几个数字出现了但位置不对。

胖球肚一共猜了 nn 次,你告诉她是否能猜出正确的数。如果猜中,则输出这个数,如果没有这样的数,输出 “ Incorrect data ” ,如果有多解输出 “ Need more data ” 。

📥 输入格式

第一行仅有一个整数 nn ( 1n101\le n\le 10 ) 表示胖球肚猜数的次数,接下来的 nn 行,每行包含三个整数 aia_{i} bib_{i} cic_{i} ,表示第 ii 次猜的情况,其中 aia_{i} 是猜的数字, bib_{i}cic_i 是你的回答,表示有 bib_{i} 个数字数值和位置都是对的,cic_{i} 个数值出现了但是位置不对。数据保证1in1\le i\le n , 0bi,ci,bi+ci40\le b_{i},c_{i},b_{i}+c_{i}\le 4

📤 输出格式

如果没有这样的数输出 “ Incorrect data ” ,有多解输出 “ Need more data ” ,若果有唯一解则输出答案 。

📝 样例 1

输入
2
1263 1 2
8103 2 1
输出
Need more data

📝 样例 2

输入
2
1234 2 2
1256 0 2
输出
2134

📝 样例 3

输入
2
0123 1 1
4567 1 2
输出
Incorrect data

📚 来源

💡 题目讲解

1

理解题意

这是一道猜数字题(经典的 Bulls and Cows 游戏)。

你心里想一个 4 位数,胖球肚来猜。每次猜完你告诉胖球肚:

  • bb:有几个数字数值和位置都对了(完全正确)
  • cc:有几个数字出现了但位置不对(半对)

四个数字必须互不相同,可以有前导 0(比如 0123 是合法的)。

🎯 给你 nn 次猜测结果,判断能不能确定答案。三种结果:

  • 唯一解 → 输出这个四位数
  • 无解 → 输出 "Incorrect data"
  • 多解 → 输出 "Need more data"

用样例 2 理解判断规则:猜 1234b=2,c=2b=2,c=2,猜 1256b=0,c=2b=0,c=2

假设答案是 2134

  • 比较 "2134""1234":位置 1 不同,位置 2 不同,位置 3 都是 3 ✓,位置 4 都是 4 ✓。b=2b=2(3 和 4)。数字 1 和 2 在两个数里都出现但位置交换了,c=2c=2。✅
  • 比较 "2134""1256":没有完全相同位置的数字 → b=0b=0。3 和 4 都在 "2134" 里但不在 "1256" 里... 等等,"1256" 里的 1 和 2 出现在 "2134" 里但位置错了 → c=2c=2。✅
1 / 5