C - 获取出生日期(so easy)
#include <cstdio>int main() { int n; int a, b, c, d, e; scanf_s("%d", &n); while (n--) { scanf_s("%6d%4d%2d%2d%3d", &a, &b, &c, &d, &e); //最后一个可能是字母,所以不读入处理 int a1 = getchar(); //用两个getchar跳过 int a2 = getchar(); printf("%04d-%02d-%02d\n", b, c, d); } return 0;}/*341010619941117865X410104198202095479410122197911218097*/
G - 检验身份证(数组yyds!)
#include <iostream>#include <string>using namespace std;int wei[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,24 };int rela[11] = { 1,0,10,9,8,7,6,5,4,3,2, };bool func(string s) { //1:passed 0:not passed int a[18]; /*字符串处理为实数数组*/ for (int i = 0; i < 17; i++) { if (!isdigit(s[i])) { cout << s << endl; return 0; } a[i] = s[i] - '0'; } if (s[17] == 'x') a[17] = 10; else a[17] = s[17] - '0'; /*权运算得验证码*/ int Z = 0; for (int i = 0; i < 17; i++) { Z += a[i] * wei[i]; Z = Z % 11; } /*验证*/ if (a[17] == rela[Z]) return 1; else { cout << s << endl; return 0; }}int main() { int n, count = 0; string s; cin >> n; for (int i = 1; i <= n; i++) { cin >> s; if (func(s)) count++; if (count == n) cout << "All passed" << endl; } return 0;}