【1127】假身份证

来源:互联网 发布:数据真实性 英文 编辑:程序博客网 时间:2024/05/20 11:52

描述:

某个国家的身份证号码的构成具有如下规则:
所有的身份证号由18位字符组成,前17位均为数字0-9,最后一位可以是数字0-9或者大写字母'Y'。
身份证号的最后一位可以由前17位计算得出,计算方法是:第一位数字*1+第二位数字*2+……+第十七位数字*17,最后一位就是累加和对11取模的结果(除以11后得到的余数),余数10用'Y'表示。

输入:

一行字符,长度等于18。

输出:

若输入的字符串符合上述身份证号的构成规则,就输出“Yes”,否则输出“No”。(结果输出后要输出回车)

输入样例:

610105198308252602

输出样例:

Yes


#include<iostream>using namespace std;int main(){char a[18],b;int i,sum=0;for(i=0;i<18;i++){cin>>a[i];}for(i=0;i<17;i++){sum=sum+(i+1)*(a[i]-'0');/*原理就是字符型实际是存储的整数,具体数值可查ASCII表,而数字0-9的ASCII是相邻的,数字字符通过减去基础的'0'的ASCII码值,就能得到对应的字符代表的实际数字,然后赋值给其他数字型变量即可。*/}b='0'+sum%11;if(b==58){b='Y';}if(b==a[17]){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}return (0);}