HDU 17新生赛 身份证验证【模拟】
身份证验证
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1611 Accepted Submission(s): 201
毕业后,小Q实现了自己的梦想,成功当上了一名光荣的网管。
众所周知,进网吧是要刷身份证的,现在老板让他写一个程序,判断进来的人是否够18周岁(当天恰好是18岁生日也可),并且根据身份证最后一位来校验身份证真伪。
身份证号码共有18位,从左至右编号,第7至第14位为生日,格式为YYYYMMDD,代表年月日。最有一位为校验位,计算规则如下:
1. 将前面的身份证号码17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2。
2. 将这17位数字和系数相乘的结果相加。
3. 用得到的结果除以11,余数为0~10时对应的最后一位为:1,0,X,9,8,7,6,5,4,3,2。
请判断给定的身份证号,如果号码合法且持有人年满18输出“Accepted”,否则输出“Sorry”(均不含引号)。
每组输入数据第一行是一个正整数n(n<=1000);
第二行3个“-”号隔开的正整数YYYY-MM-DD,代表今天的日期;
接下来n行每行一组身份证编码,每组编码18位。
2033-02-18
281289202506052608
696815200904169385
980189199511146901
Accepted
Sorry
提示:第一个人不满18岁,第三个人身份证号不合法。
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const int N = ; int a[]={,,,,,,,,,,,,,,,,};
char b[] = { '', '', 'X', '', '', '', '', '', '', '', '' };
char s[]; int main()
{
int n,j;
int f1,f2;
int y,m,d,sum,age; while(cin>>n)
{
scanf("%d-%d-%d",&y,&m,&d);
for(int i=;i<n;i++)
{
int yy=,mm=,dd=;//注意内部清零!!!而非外部!!!
char p[] = {""};
char p2[] = {""};
char p3[] = {""};
f1=f2==;
sum=;
scanf("%s",s);
for(j=;j<;j++)//最后位检验
{
sum+=((s[j]-'')*a[j]);
}
sum=sum%;// if(s[]==b[sum]) f1=;
//printf("sum=%d s[17]=%d b[sum]=%d\n",sum,s[17],b[sum]);// strncpy(p, s+, );
for(int i=;p[i];i++)
{
yy=*yy+(p[i]-'');
}
//printf("%d\n",yy);//
strncpy(p2, s+, );
for(int i=;p2[i];i++)
{
mm=*mm+(p2[i]-'');
}
//printf("%d\n",mm);//
strncpy(p3, s+, );
for(int i=;p3[i];i++)
{
dd=*dd+(p3[i]-'');
}
//printf("%d\n",dd);// age=y-yy;//岁数合法判断
//printf("%d\n",age);//2033-2025=8
if(age>)
{
if(age<)
{
f2=;
}
else if(age==)
{
if(m<mm) f2=;
else if(m==mm)
{
if(d<dd) f2=;
else f2=;
}
else f2=;
}
else
{
f2=;
}
}
else
{
f2=;
} //printf("%d %d %d\n",f1,f2,sum);// if(f1== && f2==) puts("Accepted");
else puts("Sorry");
}
}
return ;
}
模拟
HDU 17新生赛 身份证验证【模拟】的更多相关文章
- HDU 17新生赛 正品的概率【数论-概率论】
正品的概率 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- 身份证验证JS代码
身份证验证JS程序function checkidcardfun(code) { var city = {11: "北京", 12: "天津", 13: &qu ...
- java身份证验证
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- jQuery身份证验证插件
jQuery身份证验证插件 /*! * jQuery isIDCard Plugin v1.0.0 * http://www.cnblogs.com/cssfirefly/p/5629561.html ...
- Jsp注册页面身份证验证
<!--身份证验证 --><script type="text/javascript">function isCardNo(Idcardnumber) { ...
- C#实现中国身份证验证问题
C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 今天写的 C#中国身份证验证,包括省份验证和校验码验证,符合GB11643-1999标准... 理论部分: 1 ...
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- js邮箱验证,身份证验证,正则表达式
邮箱验证: html部分: 邮箱验证:<input type="text" id="mail" value="" / onkeyup= ...
随机推荐
- CodeIgniter学习笔记二:CI中的query_builder(AR)、连贯操作
一.开启query_builder 在application\config\database.php中添加如下代码(默认已开启): $query_builder = TRUE; 二.查询数据 //ge ...
- 每天一个Linux命令(8):chmod命令
chmod命令用来变更文件或目录的权限. 权限范围的表示法如下: u User,即文件或目录的拥有者:g Group,即文件或目录的所属群组:o Other,除了文件或目录拥有者或所属群组之 ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(一)
T1 帽子戏法 问题描述 小 Y 有一个\(n*n*n\)的"帽子立方体" ,即一个\(n\)层的立方体,每层的帽子都 可以排成\(n*n\)的矩阵. "帽子立方体&qu ...
- 孤荷凌寒自学python第二十一天初识python的类
孤荷凌寒自学python第二十一天初识python的类 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 类是面向对象的编程语言非常重要的概念. 编程语言的进化史中从顺序编程到结构化编程,最后才 ...
- 团队项目-第六次Scrum 会议
时间:11.1 时长:30分钟 地点:F楼2层沙发休息处 工作情况 团队成员 已完成任务 待完成任务 解小锐 完成员工信息的简单初始化 学习cocos creator样例 陈鑫 完成CurrentPr ...
- 在python中如何比较两个float类型的数据是否相等
奇怪的现象 前几天跟同事聊起来,在计算机内部float比较是很坑爹的事情.比方说,0.1+0.2得到的结果竟然不是0.3? >>> 0.1+0.2 0.300000000000000 ...
- java与C#对比文章阅读
文章:JAVA与C#的区别 讲了C#与java一些基本异同. 易语言官网有个表,比较了易语言.Java.C#的区别,比较全面可以借鉴.
- c# json 反序列化 泛型List 2行代码
List<EncyTable> list = new List<EncyTable>(); var jsonReqeust = "[{ENCY_ID:775,ENCY ...
- hdu 2510 符号三角形 (DFS+打表)
符号三角形 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- CF911F Tree Destruction 解题报告
CF911F Tree Destruction 题意翻译 给你一棵树,每次挑选这棵树的两个叶子,加上他们之间的边数(距离),然后将其中一个点去掉,问你边数(距离)之和最大可以是多少. 输入输出格式 输 ...