news 2026/2/10 12:12:32

洛谷P055-字符串、字符型的应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷P055-字符串、字符型的应用

P1055 [NOIP 2008 普及组] ISBN 号码

题目描述

每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括9 99位数字、1 11位识别码和3 33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如0 00代表英语;第一个分隔符-之后的三位数字代表出版社,例如670 670670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1 11加上次位数字乘以2 22……以此类推,用所得的结果 $ \bmod 11$,所得的余数即为识别码,如果余数为10 1010,则识别码为大写字母X XX。例如 ISBN 号码0-670-82162-4中的识别码4 44是这样得到的:对0670821629 99个数字,从左至右,分别乘以1 , 2 , … , 9 1,2,\dots,91,2,,9再求和,即0 × 1 + 6 × 2 + … … + 2 × 9 = 158 0\times 1+6\times 2+……+2\times 9=1580×1+6×2+……+2×9=158,然后取158 m o d 11 158 \bmod 11158mod11的结果4 44作为识别码。

你的任务是编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出Right;如果错误,则输出你认为是正确的 ISBN 号码。

输入格式

一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。

输出格式

一行,假如输入的 ISBN 号码的识别码正确,那么输出Right,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符-)。

输入输出样例 #1

输入 #1

0-670-82162-4

输出 #1

Right

输入输出样例 #2

输入 #2

0-670-82162-0

输出 #2

0-670-82162-4

解题思路

  • 将输入的字符串进行遍历,把前9个数字全部存储到动态数组中,随后根据题目要求算出最终结果,进行比对即可

解题时用到的关键方法

  1. 在操作字符串的时候需要先将字符串str转为StringBuilder类型StringBuilder sb = new StringBuilder(str);
  2. 要想取出字符串中的某个字符需要用到charAt()方法,括号内传入要取出的字符的序号char c = str.charAt(i);
  3. 要判断某个字符型是否为数字,可以使用Character类中的isDigit()方法,将字符作为参数传入括号内,返回值为true或falseCharacter.isDigit(c);;也可以使用ASCII的判断方法,只要这个字符的ASCII在0-9的ASCII之间if(c>'0'&&c<='9'){System.out.print("c是数字型字符");
  4. 数字字符与int型的相互转换:如果一个字符是数字型,那么它与int类型之间的相互转化方法为int num=c-'0';char c = (char)(num+'0');
  5. 将字符串转为可进行操作的StringBuilder类型后,要想替换第i个字符,使用setCharAt(index,char),在括号内传入需要替换的字符的序号以及内容即可sb.setCharAt(i,'X');

题解

//package P1055;importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringstr=sc.next();StringBuildersb=newStringBuilder(str);ArrayList<Integer>arr=newArrayList<>();for(inti=0;i<str.length();i++){charc=str.charAt(i);if(Character.isDigit(c)){arr.add(c-'0');}}intsum=0;for(inti=0;i<9;i++){sum+=(i+1)*arr.get(i);}intresult=sum%11;charr=(char)(result+'0');if(result==10){r='X';}if(r==str.charAt(str.length()-1)){System.out.println("Right");}else{sb.setCharAt(str.length()-1,r);System.out.println(sb);}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/9 12:05:07

暗数据金矿:测试从业者的2026转型机遇

被忽视的数据金矿与测试新使命 在AI与区块链深度融合的2026年&#xff0c;企业数据湖中高达68%的暗数据&#xff08;未被激活的结构化/非结构化数据&#xff09;正成为质量保障的新战场。全球头部科技企业已设立“暗数据挖掘首席官”&#xff08;Chief Dark Data Officer, CDD…

作者头像 李华
网站建设 2026/2/9 12:59:15

她是张国立的前妻,丈夫移情别恋她低调成全,如今67岁依然单身

在娱乐圈的繁华喧嚣中&#xff0c;张国立的名字如雷贯耳&#xff0c;他塑造的众多经典角色&#xff0c;成为了一代又一代观众心中的记忆。然而&#xff0c;在他辉煌事业的背后&#xff0c;有一段鲜为人知的情感故事&#xff0c;故事的女主角便是他的前妻罗秀春。罗秀春与张国立…

作者头像 李华
网站建设 2026/2/9 14:35:27

[特殊字符] Local Moondream2环境配置:GPU算力优化下的高效部署方案

&#x1f319; Local Moondream2环境配置&#xff1a;GPU算力优化下的高效部署方案 1. 为什么你需要一个“本地眼睛”&#xff1f; 你有没有过这样的时刻&#xff1a; 刚拍了一张风景照&#xff0c;想立刻生成一段能直接喂给Stable Diffusion的英文提示词&#xff0c;却要打开…

作者头像 李华
网站建设 2026/2/10 0:36:34

中小企业AI落地:通义千问Embedding-4B低成本部署教程

中小企业AI落地&#xff1a;通义千问Embedding-4B低成本部署教程 1. 为什么中小企业需要自己的Embedding模型&#xff1f; 很多中小企业老板和技术负责人常问我&#xff1a;“我们没大厂的GPU集群&#xff0c;也养不起算法团队&#xff0c;真能用上AI知识库吗&#xff1f;” …

作者头像 李华
网站建设 2026/2/8 21:00:00

RMBG-2.0模型架构优化:自定义网络层实践

RMBG-2.0模型架构优化&#xff1a;自定义网络层实践 1. 为什么需要修改RMBG-2.0的网络结构 RMBG-2.0作为当前开源背景去除领域表现最出色的模型之一&#xff0c;其90.14%的准确率确实令人印象深刻。但实际工程中&#xff0c;我们很快会发现官方版本并非万能钥匙——它在特定场…

作者头像 李华
网站建设 2026/2/8 18:28:56

如何提高大数据批处理的容错能力?

如何提高大数据批处理的容错能力&#xff1f;——从故障到自愈的系统设计指南 一、引入&#xff1a;当“双11”报表突然崩了 凌晨2点&#xff0c;电商数据仓库的值班工程师小张盯着监控屏&#xff0c;额角冒起冷汗——原本应该在1点完成的“双11实时销售额统计”批处理任务&…

作者头像 李华