[ITSA Basic] 題目27. 猜數字
問題描述 :
製作出一個 4 位數的猜數字系統,若此數的數值和位置跟答案完全相同則出現 A ,若此數的數值跟答案相同但位置不一樣則出現 B , 4A 時代表猜中此數字。 ( 注意 : 此猜數字的字數不能重複 )
假設答案為 :1234
若輸入 :
5621
4321
1324
1234
0000
則會輸出 :
0A2B
0A4B
2A2B
4A0B
輸入說明 :
讀入一連串的 4 位數字,最前面那個為此提猜數字的答案,接著為猜此數字的答案,輸入 0 為結束。
輸出說明 :
將幾 A 幾 B 輸出
解釋
Java
- import java.util.*;
- import java.lang.*;
- import java.io.*;
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int ans;
- int num;
- int A = 0;
- int B = 0;
- boolean end = false;
- ans = sc.nextInt();
- int ansarr[] = new int[4];
- ansarr[0] = ans /1000;
- ansarr[1] = (ans % 1000)/100;
- ansarr[2] = ((ans % 1000)%100)/10;
- ansarr[3] = ((ans % 1000)%100)%10;
- /*
- for(int i =0;i < ansarr.length;i++)
- {
- System.out.println(ansarr[i]);
- }
- */
- int numarr[] = new int[4];
- //
- while(end == false)
- {
- num = sc.nextInt();
- if(num !=0000)
- {
- for(int j = 0;j < numarr.length;j++)
- {
- numarr[0] = num /1000;
- numarr[1] = (num % 1000)/100;
- numarr[2] = ((num % 1000)%100)/10;
- numarr[3] = ((num % 1000)%100)%10;
- }
- for(int x = 0;x < ansarr.length;x++)
- {
- for(int y = 0;y < numarr.length;y++)
- {
- if(x==y)
- {
- if(ansarr[x] == numarr[y])
- {
- A++;
- }
- }
- else
- {
- if(ansarr[x] == numarr[y])
- {
- B++;
- }
- }
- }
- }
- System.out.println(A + "A" + B + "B");
- A=0;
- B=0;
- }
- else
- {
- end = true;
- }
- }
- }
- }
C++
- #include <iostream>
- using namespace std;
- int main() {
- // 題目27. 猜數字
- string ans;
- string guess;
- int A = 0, B = 0;
- cin >> ans;
- while(cin >> guess)
- {
- if(guess != "0000")
- {
- for(int i = 0;i < 4;i++)
- {
- for(int j = 0;j < 4;j++)
- {
- if(i == j && ans[i] == guess[j])
- {
- A++;
- }
- else if(i != j && ans[i] == guess[j])
- {
- B++;
- }
- }
- }
- cout << A << "A" << B << "B" << endl;
- A = 0;
- B = 0;
- }
- else
- {
- break;
- }
- }
- return 0;
- }
沒有留言:
張貼留言