现在大家使用的身份证都是18位号码,其实就在几年以前,身份证都是使用的15位号码。全中国十几亿人都要将15位的身份证号升至18位,工作量之大可想而知。现在假如你回到了身份证升位的时期,当地一个公安局想请你设计一款软件实现自动升位。 升位方法:将原十五位身份证出生年份由原来的2位升至4位(比如81升为1981,假设所有身份证的主人为1900-1999年出生)得到17位身份证码,再根据17位身份证码计算校验码,校验码加至号码尾即得18位身份证号码。 校验码是由十七位身份证码生成,生成方法如下: 校验码是由十七位身份证码生成,生成方法如下:
校验码公式: V=∑(ai×Wi)(mod 11) 2≤i≤18……………………………………(1) 其中, i----表示号码字符从右至左包括校验码在内的位置序号; ai----表示第i位置上的号码数值;
Wi----示第i位置上的加权因子(其值已定),其数值依据公式Wi=2^(i-1)(mod 11)计算得出,mod表示取余运算。
以34052419800101001C为例,其中C为校验码,根据公式(1)进行计算: V=(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) mod 11 = 2
然后根据计算的结果V,查下表得校验码,当C=10时,校验码为大写X。 校验码对应表
V的值 0 1 2 3 4 5 6 7 8 9 10 校验码C 1 0 X 9 8 7 6 5 4 3 2
查表v=2的校验码为X,所以18位号码为:34052419800101001X
Input
第一行为一个整数n(0<n≤10000);
接下来n行每行为一个待升位的十五位身份证号;
Output
对于每个待升位的十五位身份证号输出其对应的十八位身份证号。
Sample Input
3
340524800101001 430104891010253 430902871220803
Sample Output
34052419800101001X 430104198910102530 430902198712208036
Source
校内交通车
Time Limit:1000MS Memory Limit:65536K
Total Submit:65 Accepted:29
Description
在农大最牛的车莫过于校内交通车了(以下简称校车),大家都喜欢坐校车去上课。我住在金岸,到七教上课经常懒得走,所以就难免不了要坐校车了^_^。
为了以最快的速度从金岸到七教,现在我采用以下规则:
1.我在金岸门口等车,当第一辆校车来时,我直接坐校车往七教走,假设我上车不需要花费时间,且校车不再载其他人。
2.如果在途中有后面的校车要超过我坐的校车时,我直接跳上后面速度快的校车,假设这其中也不需要花费额外的时间。
金岸到七教的距离记做D。每辆校车到达金岸门口的时间记做C,每辆车有一个恒定不变的速度V.每天有M辆校车经过金岸门口。
现在我想知道我到达七教时所需要的最短时间,这样我就可以知道我是否会迟到,你能帮我吗?
Input
第一行包含一个整数N(0 每组测试数据的首行包含两个整数M(1<=M<=10),D(1<=D<=1000,km)。 以下M行每行包含2个整数V(1<=V<=40,km/h)和C(以分钟为单位)。 Output 我到达七教的最短时间,精确到小数点后两位。 Sample Input 1 3 10 3 6 10 30 4 3 Sample Output 90.00 Source 1031奖学金测评 Time Limit:1000MS Memory Limit:65536K Total Submit:92 Accepted:44 Description 每年的十月份就是同学们最关注的时候了,因为此时一年一度的评奖评优又开始了。大家都在忙碌着自己哪项该打多少分,然后把自己的各项得分反馈到班长处。我们的班长同学确实够累了,他得把每位同学的各项分加起来,再经过一些计算,然后还要排序。好在我们是信科院的,就把这些东西就交给电脑去处理吧,让班长们也轻松轻松。其实做个这样的数据自动处理的程序也比较简单,其中一种实现的方法就是同学们按照固定的格式把各自的各项分数通过E-mail发到班长的邮箱,然后程序通过POP3协议自动获取同学们发的所有邮件,再对邮件进行简单的分析,则可以得到所需要的每位同学的数据。假设这个程序的前几步已经完成,并且数据已经经过初步的分析和计算,现在已经得到了每位同学的姓名,德育分,智育分和文体分,想请你继续完成这个程序,利用这些数据得出每位同学的最终分数和全班的排名。 每位同学的最终分数为各项的加权得分之和,加权得分即为该项得分乘以相应的权值。德育的权值为30%×3,智育的权值为40%×3,文体的权值为30%×3,例如某位同学的智育分为137.4,则其智育分的加权得分为:137.4×40%×3=164.9(结果保留了一位小数)。 Input 第一行为一个整数n(0≤n≤50); 接下来n行为每位同学反馈的信息:从左往右依次为姓名(不超过8个字符),德育分,智育分,文体分。(分数为浮点型数据) Output 按最终得分从高到低排序,输出结果。 格式如下: 第一行输出依次输出\左靠齐占9个宽度)\左靠齐占10个宽度)\右靠齐8个宽度)。 接下来有n行,每行一个同学的名次(左靠齐4个宽度),姓名(右靠齐8个宽度),最终得分(右对齐15个宽度),最终得分保留1位小数。 Sample Input 4 aa bb cc dd 24 25 16 25 36.5 137.4 87.4 93.2 74 88 74 83 Sample Output rank name score 1 bb 266.6 2 dd 209.0 3 cc 185.9 4 aa 132.0 Source 自动发声报数器之长数版 Time Limit:1000MS Memory Limit:65536K Total Submit:17 Accepted:7 Description 自动发声报数装置在生活的许多场合下有应用。譬如说,在银行等排队取号后,营业窗口会依次自动发声报出可办理业务的号码。例如你取到了301号,则计算机会报出“三百零一号顾客请到某某窗口”。在医院等处缴费时,会有自动发声系统告知你应该缴费的金额。此外还有,在街头的身高体重测试机报告你的身高和体重时,或者在某些游戏结束后报告你获得的分数时,都应用了自动发声。发声的原理不复杂,计算机或单片机通过某种途径获得待发声的数据,分析出这个数字应该如何发音,然后合成为连续的语音信号控制扬声器发出声音。 你正好有机会到生产该种自动发声报数器的某某技术开发公司实习。为了考察一下你的编程能力,公司的技术总监给你布置了以下任务,你一定要不辱使命哦! 给定一个整数,请你输出这个数字的发音应该念成哪几个字。显然,这个任务仅仅是这个发声装置设计的发音分析部分。 Input 第一行包含一个整数n(1≤n≤200)表示测试用例的个数。其后的n行中,每行包含有一个整数k(0≤k<10^17,即10的17次方)。 Output 每个测试用例的输出单独占一行,输出整数k的发音对应的文字。\十百千万亿\分别用其拼音首字母的大写表示。 Sample Input 7 203 1008 12345 100000 1003040 9000000000000000 1234567890123456 Sample Output 2B03 1Q08 1W2Q3B4S5 1SW 1BW3Q04S 9QWY