CF-63C普及+/提高
猜数字
⏱ 2.0s💾 256MB
📋 题目描述
你心里想了一个 位数让胖球肚来猜,胖球肚每次猜一个数,她猜的数必须是各位数字均不相同且可以有前导 ,你告诉她有几个数字的数值和位置都是对的,以及有几个数字出现了但位置不对。
胖球肚一共猜了 次,你告诉她是否能猜出正确的数。如果猜中,则输出这个数,如果没有这样的数,输出 “ Incorrect data ” ,如果有多解输出 “ Need more data ” 。
📥 输入格式
第一行仅有一个整数 ( ) 表示胖球肚猜数的次数,接下来的 行,每行包含三个整数 ,表示第 次猜的情况,其中 是猜的数字, 和 是你的回答,表示有 个数字数值和位置都是对的, 个数值出现了但是位置不对。数据保证 , 。
📤 输出格式
如果没有这样的数输出 “ 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
📚 来源
Problem:CF-63C
💡 题目讲解
1
理解题意
这是一道猜数字题(经典的 Bulls and Cows 游戏)。
你心里想一个 4 位数,胖球肚来猜。每次猜完你告诉胖球肚:
- :有几个数字数值和位置都对了(完全正确)
- :有几个数字出现了但位置不对(半对)
四个数字必须互不相同,可以有前导 0(比如 0123 是合法的)。
🎯 给你 次猜测结果,判断能不能确定答案。三种结果:
- 唯一解 → 输出这个四位数
- 无解 → 输出
"Incorrect data" - 多解 → 输出
"Need more data"
用样例 2 理解判断规则:猜 1234→,猜 1256→。
假设答案是 2134:
- 比较
"2134"和"1234":位置 1 不同,位置 2 不同,位置 3 都是 3 ✓,位置 4 都是 4 ✓。(3 和 4)。数字 1 和 2 在两个数里都出现但位置交换了,。✅ - 比较
"2134"和"1256":没有完全相同位置的数字 → 。3 和 4 都在"2134"里但不在"1256"里... 等等,"1256"里的 1 和 2 出现在"2134"里但位置错了 → 。✅
1 / 5