pku 3589 Number-guessing Game 解题报告

 

Number-guessing Game
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 3746   Accepted: 2772

Description

Larry likes playing the number-guessing game.

Two players are needed in a game. Suppose they are X and Y, and X presents a number for Y to guess. Firstly, X chooses a number with four different digits, keeping it in mind, and tells Y to start guessing. Every time Y has guessed, X should give out *A*B to show Y how close to the number his answer is. Here the symbol * stands for a number, and the number before A is the number of digits in Y's answer with both correct value and position. The number before B is the number of digits in Y's answer with correct value but incorrect position.

For example, if X chooses the number 5204, and Y guesses 4902, then X should give out 1A2B, in which 1A corresponds for digit 0 with both correct value and position and 2B corresponds for digit 2 and 4 with correct value but incorrect position. Then Y will go on guessing according to 1A2B that X presents him until he gets the totally correct number 5204 (when X shows him 4A0B).

Now you are given two numbers, and what you need to do is just testing how close they are.

Input

The first line of the input is an integer T which indicates the number of test cases. For each test case, input two numbers. Each number contains four different digits.

Output

For each test case, output *A*B stands for how close the two numbers are.

Sample Input

2
5204 4902
0123 3210

Sample Output

1A2B
0A4B

Source

South Central China 2008 hosted by NUDT
/** http://acm.pku.edu.cn/JudgeOnline/problem?id=3589 */ /** 解题思路: 这道题简答的模拟即可。pos数组用于保存X的每一位的位置,0为没有出现。然后对Y进行处理,即可 */ #include using namespace std; void guessNumber(int x, int y) { int pos[10] = {0}; int countA = 0, countB = 0; int i = 1; while(i <= 4) { pos[x % 10] = i; x /= 10; i++; } i = 1; while(i <= 4) { int t = y % 10; if(pos[t]) { if (pos[t] == i) countA++; else countB++; } y /= 10; i++; } cout << countA << 'A' << countB << 'B' << endl; } int main() { int CASE; int x,y; cin >> CASE; while(CASE--) { cin >> x >> y; guessNumber(x,y); } return 0; } 

 

你可能感兴趣的:(☆ACM,解题报告☆)