PAT — 1031.查验身份证 (15 分)
好久没刷过PAT了,现在都从PAT变成PTA了。哈哈。
水了一题,结果一个测试点也不给过。
代码如下:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
int nW[18] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
char cM[12] = { '1','0','X','9','8','7','6','5','4','3','2' };
string s;
vector<int> vecInput;
bool bflag = true;
int n, num, sum;
cin >> n;
for (unsigned int i = 0; i < n; i++)
{
cin >> s;
sum = 0;
for (unsigned int j = 0; j < 17; j++)
{
if (s[i] < '0' || s[i] > '9') {
bflag = false;
}
sum += (s[j] - '0') * nW[j];
}
sum = sum % 11;
if (s[s.size() - 1] != cM[sum]) {
cout << s << endl;
bflag = false;
}
}
if (bflag)
cout << "All passed" << endl;
return 0;
}