ISBN号码
2017-05-03 16:14
169 查看
题目:(来自:http://www.rqnoj.cn)
题目描述
每一本正式出版的图书都有一个ISBN号码之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版设,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在该出版社的编号;最后一位为识别码。
识别码计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2.,……,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11 的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入
【输入样例1】
0-670-82162-4
【输入样例2】
0-670-82162-0
样例输出
【输出样例1】
Right
【输出样例2】
0-670-82162-4
很水!不说了,直接上代码:
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
//ifstream cin(".in");
//ofstream cout(".out");
char a[14];
int main()
{
int i,j,n,la;
cin>>a;
la=strlen(a);
int t=1,jishu=0;
for(i=0;i<la-1;i++)
{
if(a[i]!='-')
{
jishu=jishu+(a[i]-'0')*t;
t++;
}
}
jishu=jishu%11;
if(jishu==10)
{
if(a[12]=='X')cout<<"Right"<<endl;
else
{
for(i=0;i<la-1;i++)cout<<a[i];
cout<<"X"<<endl;
}
}
else
{
if(a[12]-'0'==jishu)cout<<"Right"<<endl;
else
{
for(i=0;i<la-1;i++)cout<<a[i];
cout<<jishu<<endl;
}
}
//system ("pause");
return 0;
}
测试点1 Accepted / 1ms / 12252kB
测试点2 A
4000
ccepted / 7ms / 12252kB
测试点3 Accepted / 1ms / 12252kB
测试点4 Accepted / 0ms / 12252kB
测试点5 Accepted / 1ms / 12252kB
测试点6 Accepted / 5ms / 12252kB
测试点7 Accepted / 0ms / 12252kB
测试点8 Accepted / 0ms / 12252kB
测试点9 Accepted / 2ms / 12252kB
测试点10 Accepted / 1ms / 12252kB
全对!
题目描述
每一本正式出版的图书都有一个ISBN号码之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版设,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在该出版社的编号;最后一位为识别码。
识别码计算方法如下:
首位数字乘以1加上次位数字乘以2……以此类推,所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2.,……,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11 的结果4作为识别码。
你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。
输入格式
输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。
输出格式
输出共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定格式,输出正确的ISBN号码(包括分隔符“-”)。
样例输入
【输入样例1】
0-670-82162-4
【输入样例2】
0-670-82162-0
样例输出
【输出样例1】
Right
【输出样例2】
0-670-82162-4
很水!不说了,直接上代码:
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
//ifstream cin(".in");
//ofstream cout(".out");
char a[14];
int main()
{
int i,j,n,la;
cin>>a;
la=strlen(a);
int t=1,jishu=0;
for(i=0;i<la-1;i++)
{
if(a[i]!='-')
{
jishu=jishu+(a[i]-'0')*t;
t++;
}
}
jishu=jishu%11;
if(jishu==10)
{
if(a[12]=='X')cout<<"Right"<<endl;
else
{
for(i=0;i<la-1;i++)cout<<a[i];
cout<<"X"<<endl;
}
}
else
{
if(a[12]-'0'==jishu)cout<<"Right"<<endl;
else
{
for(i=0;i<la-1;i++)cout<<a[i];
cout<<jishu<<endl;
}
}
//system ("pause");
return 0;
}
测试点1 Accepted / 1ms / 12252kB
测试点2 A
4000
ccepted / 7ms / 12252kB
测试点3 Accepted / 1ms / 12252kB
测试点4 Accepted / 0ms / 12252kB
测试点5 Accepted / 1ms / 12252kB
测试点6 Accepted / 5ms / 12252kB
测试点7 Accepted / 0ms / 12252kB
测试点8 Accepted / 0ms / 12252kB
测试点9 Accepted / 2ms / 12252kB
测试点10 Accepted / 1ms / 12252kB
全对!
相关文章推荐
- NOIP2008 普及组T1 ISBN号码 解题报告-S.B.S.
- CCF认证模拟之ISBN号码
- CCF 201312-2 ISBN号码
- CCF201312-2 ISBN号码(100分)
- CCF之ISBN号码
- 201312-2 ISBN号码 ccf
- 201312_2 ccf csp ISBN号码(100)
- ISBN号码(0)<P2008_1>
- ISBN号码
- CCF计算机软件能力认证模拟试题-ISBN号码(Java参考答案学习记录)
- AC日记——ISBN号码 openjudge 1.7 29
- 201312-2 试题名称: ISBN号码(100分)ccf认证
- CCF模拟题--ISBN号码
- ISBN号码(p1055)
- ISBN号码
- CCFCSP 201312-2 ISBN号码
- Vijos P1484 ISBN号码
- CCF-CAP 201312-2 ISBN号码 答案
- CCF真题之ISBN号码
- NOIP2008:ISBN号码