LuoguP7379 [COCI2018-2019#6] Lun 題解
阿新 • • 發佈:2021-12-16
LuoguP7379 [COCI2018-2019#6] Lun 題解
Content
判斷使一個長度為 \(n\) 的銀行卡號碼(有一個空缺)合法,空缺裡面填入的最小數字。
資料範圍:\(n\in[1,100]\)。
Solution
由於只有一個空缺,因此我們可以考慮直接列舉 \(0\sim 9\),一旦試出使銀行卡號碼合法的數字直接輸出答案即可。
判斷合法建議使用函式,見以下的程式碼實現。
Code
int n; string s; void judge(string s, int place) { int sum = 0; for(int i = n - 2; i >= 0; --i) { if(!(((n - 2) - i) % 2)) { int x = (s[i] - '0') * 2; int num = x / 10 + x % 10; sum += num; } else { int x = s[i] - '0'; sum += x; } } if(sum * 9 % 10 == (s[n - 1] - '0')) {printf("%c", s[place]); exit(0);} return; } int main() { scanf("%d", &n); cin >> s; for(int i = 0; i < n; ++i) { if(s[i] == 'x') { for(int j = 0; j <= 9; ++j) { s[i] = j + '0'; judge(s, i); } } } return 0; }