题解 | #[NOIP2008]ISBN号码#
[NOIP2008]ISBN号码
https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5
#include <cmath> #include <iostream> #include <iomanip> #include <string> using namespace std; int main() { string ISBN; cin >> ISBN; int sum = 0, less; int o = 1; int check; for (int i = 0; i < ISBN.length(); i++) { if (ISBN[i] >= '0' && ISBN[i] <= '9' && o<=9) { sum += (ISBN[i] - '0') * o; o++; } } less = sum%11; if(ISBN.back()!= 'X') { check = ISBN.back()-'0'; if (less==check) { cout<<"Right"; } else{ if (less == 10) { ISBN.back() = 'X'; } else { ISBN.back() = '0' + less; } cout<<ISBN; } } else{ check = 10; if (less==check) { cout<<"Right"; } else{ if (less == 10) { ISBN.back() = 'X'; } else { ISBN.back() = '0' + less; } cout<<ISBN; } } }
感觉有点麻烦了,输入字符串遍历,处理数字字符,累加计算后,检查,注意是不是X