题目解析
给定一些身份证号判断其是否合法
如果这些身份证号都合法 那么就输出 “All passed” 否则 那些不合法就输出不合法的身份证号
解题思路
直接计算每位的权重和 看 是否与合法即可
代码
import java.io.*;
import java.util.*;
public class Main
{
static int z[] =
{ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
static char m[] =
{ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
public static void main(String[] args)
{
int n = sc.nextInt();
boolean isall = true;
while (n-- > 0)
{
String str = sc.next();
char s[] = str.toCharArray();
int sum = 0;
for (int i = 0; i < 17; i++)
sum = (sum + (s[i] - '0') * z[i]) % 11;
if (m[sum % 11] != s[17])
{
isall = false;
out.println(str);
}
}
if (isall)
out.println("All passed");
out.flush();
out.close();
}
static Scanner sc = new Scanner(System.in);
static PrintWriter out = new PrintWriter(System.out);
}