news 2026/6/10 17:39:01

洛谷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/6/10 11:20:07

RTPProxy 命令协议

这是一个基于 GitHub RTPProxy Wiki 文档&#xff08;RTPProxy Command Protocol&#xff09;的中文翻译和详解。 由于 Wiki 页面可能会更新&#xff0c;以下内容涵盖了该文档中定义的核心协议标准。RTPProxy 主要是配合 OpenSIPS、Kamailio 或 Sippy B2BUA 使用的媒体代理服务…

作者头像 李华
网站建设 2026/6/10 8:18:55

RMBG-2.0在影视制作中的应用:绿幕后期处理

RMBG-2.0在影视制作中的应用&#xff1a;绿幕后期处理 1. 影视后期的新选择&#xff1a;为什么绿幕不再非得靠传统方式 拍完一场戏&#xff0c;演员站在绿布前演得投入&#xff0c;灯光打得精准&#xff0c;摄影机稳稳记录——可到了后期&#xff0c;问题才真正开始。抠像不干…

作者头像 李华
网站建设 2026/6/10 8:16:48

智能会议系统开发:结合语音识别与TranslateGemma的实时字幕翻译

智能会议系统开发&#xff1a;结合语音识别与TranslateGemma的实时字幕翻译 1. 一场会议的实时翻译体验有多真实&#xff1f; 上周参加一个跨国技术研讨会时&#xff0c;我坐在会议室角落&#xff0c;看着投影屏上滚动的中英双语字幕&#xff0c;心里有点惊讶——这已经不是过…

作者头像 李华
网站建设 2026/6/10 8:12:09

小白必看!ERNIE-4.5-0.3B快速入门教程:从部署到调用

小白必看&#xff01;ERNIE-4.5-0.3B快速入门教程&#xff1a;从部署到调用 你是不是也遇到过这些情况&#xff1f;想试试大模型&#xff0c;但被复杂的环境配置劝退&#xff1b;听说ERNIE系列很强大&#xff0c;却卡在第一步——连模型都跑不起来&#xff1b;看到别人用AI写文…

作者头像 李华
网站建设 2026/6/10 8:12:34

零基础玩转AI头像生成器:手把手教你设计古风角色形象

零基础玩转AI头像生成器&#xff1a;手把手教你设计古风角色形象 1. 为什么古风头像正在成为新潮流&#xff1f; 你有没有刷到过这样的朋友圈头像&#xff1a;青衫磊落、墨发如瀑&#xff0c;背景是烟雨江南的粉墙黛瓦&#xff1b;或是红衣飒爽、执剑而立&#xff0c;身后一轮…

作者头像 李华