当前位置: 首页 > news >正文

洛谷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);}}}
http://www.jsqmd.com/news/347652/

相关文章:

  • 有了这个迹象,说明你就该被辞退了!
  • 2026年车辆报废解体公司权威推荐:事故汽车报废/事故车辆报废/北京汽车报废解体厂/新能源车辆报废/汽车报废注销/选择指南 - 优质品牌商家
  • 高吞吐与性能优化:Kamailio调优指南
  • 2026年Q1武汉货架选购指南:技术、品牌与实战案例深度解析 - 2026年企业推荐榜
  • 抱歉,SpringBoot 已经跌出第一梯队!
  • Qwen3-4B-Instruct实战案例:用CPU版‘最强智脑’写小说+写代码
  • 2026年合肥旧房翻新服务商深度评测与选择指南 - 2026年企业推荐榜
  • 探寻陶都匠心:2026年宜兴市优质琉璃瓦生产商深度解析 - 2026年企业推荐榜
  • 于和伟带妻子回老家过年时经过大哥的包子铺,于是上去帮忙,结果却被大哥骂:别给我添乱
  • 企业AI开发与技术实践白皮书
  • 一次 GLM-4.7 的 MaaS 接入实践:Dify 工作流搭建笔记
  • 2026年终极机遇:太空软件测试员培训计划曝光
  • [特殊字符] Local Moondream2环境配置:GPU算力优化下的高效部署方案
  • 她是张国立的前妻,丈夫移情别恋她低调成全,如今67岁依然单身
  • 暗数据金矿:测试从业者的2026转型机遇
  • Python零基础入门:使用Baichuan-M2-32B开发首个医疗AI应用
  • Lychee多模态重排序模型代码实例:HTTP接口调用、得分解析与排序逻辑实现
  • ‌2026科技薪资趋势报告:量子工程师年薪破600万领跑,基因测试员陷低谷,AI与安全测试成职业新风口
  • REX-UniNLU实战:电商评论情感分析一键搞定
  • 于文华不再隐瞒!终于公开与朱之文真正关系,原来我们都被骗了......
  • Linux系统部署全攻略:DeepSeek-OCR-2生产环境配置
  • Qwen-Image-2512-SDNQ Web服务惊艳效果:中国节气主题系列AI绘画作品
  • 2026年阜阳平移门生产商综合评测与选购指南 - 2026年企业推荐榜
  • 2026年pa6尼龙板厂家权威推荐榜:耐磨损耐腐蚀尼龙板/Mc901蓝色尼龙板/Mc浇筑加玻纤尼龙板/mc浇铸尼龙板/选择指南 - 优质品牌商家
  • Qwen3-Reranker-0.6B惊艳效果:长文档分段重排与关键段落高亮展示
  • 2026年尼龙管厂家公司权威推荐:pa66尼龙板/尼龙管加工定制/耐磨损耐腐蚀尼龙板/Mc901蓝色尼龙板/Mc901蓝色尼龙管/选择指南 - 优质品牌商家
  • 手把手教你用雯雯的后宫-造相Z-Image生成瑜伽女孩图片
  • 计算机等级考试—大型KTV场景IP分类与子网计算—东方仙盟练气期
  • 常见C++编译器套件
  • Gemma-3-270m在Ubuntu系统部署指南:从零开始配置