news 2026/3/30 16:52:05

洛谷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/3/21 11:39:26

计算机三端毕设实战-springboot基于B_S架构的积分制零食自选平台基于SpringBoot+Vue的积分制零食自选销售平台设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/20 12:06:55

‌2026科技薪资趋势报告:量子工程师年薪破600万领跑,基因测试员陷低谷,AI与安全测试成职业新风口

预言背后的行业变革信号 2026年初&#xff0c;科技行业薪资结构正经历颠覆性调整&#xff0c;引发“基因测试员薪资反超量子工程师”的热议。这一预言是否可信&#xff1f;本文结合权威数据&#xff0c;先剖析基因测试与量子工程领域的薪资现状&#xff0c;再解析软件测试公众…

作者头像 李华
网站建设 2026/3/26 19:41:49

Linux系统部署全攻略:DeepSeek-OCR-2生产环境配置

Linux系统部署全攻略&#xff1a;DeepSeek-OCR-2生产环境配置 1. 为什么需要专门的Linux生产环境部署 DeepSeek-OCR-2不是简单的命令行工具&#xff0c;而是一个需要协调GPU计算、内存管理、服务稳定性和安全隔离的完整AI服务系统。在开发机上跑通demo和在生产环境中每天处理…

作者头像 李华
网站建设 2026/3/30 11:52:06

DeepSeek-R1-Distill-Qwen-1.5B金融风控应用:低延迟推理部署教程

DeepSeek-R1-Distill-Qwen-1.5B金融风控应用&#xff1a;低延迟推理部署教程 在金融风控场景中&#xff0c;模型响应速度、推理稳定性与业务适配性往往比参数规模更重要。当面对毫秒级决策需求、高并发审批请求或边缘设备部署限制时&#xff0c;一个轻量但可靠的大模型反而更具…

作者头像 李华
网站建设 2026/3/27 4:21:22

Anaconda环境管理Qwen3-ASR-1.7B多版本共存方案

Anaconda环境管理Qwen3-ASR-1.7B多版本共存方案 1. 为什么需要独立环境管理语音识别模型 你可能已经试过直接在系统Python里安装Qwen3-ASR&#xff0c;结果发现&#xff1a;装完1.7B版本后&#xff0c;原来跑得好好的0.6B项目突然报错&#xff1b;或者想同时测试不同版本的强…

作者头像 李华