#11902: B的部分出錯 請幫忙檢查一下 謝謝


asashibeer (nickchenchj)

學校 : 國立成功大學
編號 : 34556
來源 : [61.70.56.4]
最後登入時間 :
2021-01-15 22:30:21
a291. nAnB problem | From: [115.43.209.83] | 發表日期 : 2017-04-16 21:42

B的部分 

n: 設定完答案後輸入的數字, a: 一開始設定的標準答案

totb = (n1 != a1 && ((n1 == a2 && n2 != a2) || (n1 == a3 && n3 != a3) || (n1 == a4 && n4 != a4)))
+ (n2 != a2 && ((n2 == a1 && n1 != a1) || (n2 == a3 && n3 != a3) || (n2 == a4 && n4 != a4)))
+ (n3 != a3 && ((n3 == a1 && n1 != a1) || (n3 == a2 && n2 != a2) || (n3 == a4 && n4 != a4)))
+ (n4 != a4 && ((n4 == a1 && n1 != a1) || (n4 == a2 && n2 != a2) || (n4 == a3 && n3 != a3)));

-------------------------------------------------------------------------------------------------------------------

完整程式碼

#include<iostream>

using namespace std;

int main()
{
 int n, tota, totb; // total a, total b
 char n1, n2, n3, n4, a1, a2, a3, a4; // a: answer

 while (cin >> a1 >> a2 >> a3 >> a4) {
  cin >> n;
  while (n--) {
   cin >> n1 >> n2 >> n3 >> n4;
   tota = (n1 == a1) + (n2 == a2) + (n3 == a3) + (n4 == a4);
   totb = (n1 != a1 && ((n1 == a2 && n2 != a2) || (n1 == a3 && n3 != a3) || (n1 == a4 && n4 != a4)))
    + (n2 != a2 && ((n2 == a1 && n1 != a1) || (n2 == a3 && n3 != a3) || (n2 == a4 && n4 != a4)))
    + (n3 != a3 && ((n3 == a1 && n1 != a1) || (n3 == a2 && n2 != a2) || (n3 == a4 && n4 != a4)))
    + (n4 != a4 && ((n4 == a1 && n1 != a1) || (n4 == a2 && n2 != a2) || (n4 == a3 && n3 != a3)));
   cout << tota << "A" << totb << "B\n";
  }
 }
}

 
#11910: Re:B的部分出錯 請幫忙檢查一下 謝謝


letitgo (讓它過)

學校 : 不指定學校
編號 : 65414
來源 : [49.219.166.249]
最後登入時間 :
2018-08-18 17:01:06
a291. nAnB problem | From: [101.13.97.174] | 發表日期 : 2017-04-17 23:39

題目:這時候要是有辦法知道目前嘗試的密碼錯了幾個字,那解鎖的速度就快多了。

請寫一個程式,可以判斷每組數字跟正確答案差了幾個字。

 

程式有去除A影響沒去除B影響。

採用規則與題目要求有點差異,B部份可能多算。

 
ZeroJudge Forum