一道算法题,来源于洛谷

【洛谷算法题】P1424-小鱼的航程(改进版)【入门2分支结构】Java题解 【洛谷算法题】P1424-小鱼的航程(改进版)【入门2分支结构】Java语言详细题解 阅读详情

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

识别码的计算方法如下:

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

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

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

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

输入输出样例
输入
0-670-82162-4
输出
Right
输入
0-670-82162-0
输出
0-670-82162-4

我的代码如下:

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
int data[4];
void change(string &str,int &num)
{
 stringstream ss;
 ss<<str;
 ss>>num;
}
int main()
{
  int index=0;
  int a,b1,b2,b3,c1,c2,c3,c4,c5,d,answer;
  string s;
  getline(cin,s);
  istringstream iss(s);//这句是配合getline进行流的输入,不能省略
  string tmp;
  while(getline(iss,tmp,'-'))
  {
     change(tmp,data[index++]);
  
  }
  a=data[0];
  b1=data[1]/100;
  b2=data[1]/10%10;
  b3=data[1]%10;
  c1=data[2]/10000;
  c2=data[2]/1000%10;
  c3=data[2]/100%10;
  c4=data[2]/10%10;
  c5=data[2]%10;
  d=data[3];
 if((a*1+b1*2+b2*3+b3*4+c1*5+c2*6+c3*7+c4*8+c5*9)%11==d)
	 cout<<"right";
 else
	 cout<<data[0]<<"-"<<data[1]<<"-"<<data[2]<<"-"<<(a*1+b1*2+b2*3+b3*4+c1*5+c2*6+c3*7+c4*8+c5*9)%11;
return 0;
}

我的代码(如上)通俗易懂,但是看完原作者的真的是拍案叫绝啊
原作者代码如下:

#include <stdio.h>//代码简洁明了(个人观点)
int main(void){
  char a[14], mod[12] = "0123456789X"; //先将mod11后的十一个字符存入数组
  gets(a); //输入字符串
  int i, j = 1, t = 0;
  for(i = 0; i < 12; i++) {
        if(a[i] == '-') continue; //字符串为分隔符‘-’时跳过此次循环进入下一次循环
    t += (a[i]-'0')*j++; //t储存 第j个  数字  * j 的和
  }
  if(mod[t%11] == a[12]) printf("Right");
  else {
      a[12] = mod[t%11]; //若识别码错误,则赋正确的识别码,然后输出
      puts(a);
  }
  return 0;
}
【洛谷算法题】P5707-上学迟到【入门1顺序结构】Java题解 【洛谷算法题】P5707-上学迟到【入门1顺序结构】Java详细题解 阅读详情

相关推荐

洛谷 P1059 明明的随机数 题解

!特别公告! 由于我还是一名学生,每周一到周五晚上才会发一篇题解,处理消息,如果处理消息不及时,请大家见谅鸭!!另外本人每周六周日都会更新两篇题解,一般下午以及晚上在线哟! 嗯,这是我第二次在优快云发题解啦!好开心啊! 好吧,今天(反正是同一天)我给大家带来了洛谷排序部分的P1059 明明的随机数这道题。 传送门 P1059 明明的随机数 大家可以和我一起审一审题目鸭! 这道题大家仔细看看之后,其实不难发现这只是一道普通的数组排序去重问题,很好理解的。 接下来敲重点了!搬好小板凳做好...

water~ 1301

ISBN校验

if(((l*1+(cbs/100*2)+(cbs/10%10*3)+(cbs%10*4)+(bh/10000*5)+(bh/1000%10*6)+(bh/100%10*7)+(bh/10%10*8)+(bh%10*9))%11)==10)//如果所得余数为10,则输出“Right”,否则就要用所得余数替换原先的尾号X。对应每行输入,假如输入的ISBN号码的识别码正确,那么输出Right,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符-)。public class 测试 {

2301_79293946的博客 1209

洛谷P8419/P9987 riapq算法题解析与实现

在算法竞赛中,动态数据集合处理是常见考点,涉及数据结构如平衡二叉搜索树、哈希表等。这些数据结构通过特定算法实现高效插入、删除和查询操作,显著提升程序性能。平衡树如AVL和红黑树能保持操作对数时间复杂度,适用于大规模数据处理。实际应用中,这类技术广泛用于数据库索引、实时系统等场景。本文以洛谷riapq题为例,详解如何结合set和unordered_map解决动态集合问题,并分享输入输出优化、惰性删除等实用技巧。

519

检测书籍号码

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

2301_80336148的博客 475

量化交易新手必看:如何用vnpy+Tushare轻松获取A股历史数据(附完整代码)

本文为量化交易新手提供了使用vnpy和Tushare构建A股历史数据获取系统的完整指南。通过详细的代码示例,手把手教你搭建环境、封装数据获取引擎,并实现日线等数据的格式转换与本地存储,为策略回测与分析奠定坚实的数据基础。

weixin_29098117的博客 378

RV1126B RV1126B-P 瑞芯微 高性能视觉处理器SoC 芯片

它集成了大量算法加速器,如 HDR、3A、LSC、3DNR、2DNR、锐化、去雾、鱼眼校正、伽马校正、特征点检测等。此外,还配备了一款最多8兆像素的 AI-ISP,作为对传统ISP 的补充,以提供卓越的空间去噪性能和增强的图像增强效果。除了先前的高性能多媒体区块外,RV1126B还包含丰富的音频、内存和其他外围接口,如I2C、SPI、PWM等。借助这-特性,来自相机的视频可以以高分辨率进行编码,并存储在本地内存中,同时还能将另-段较低分辨率的视频传输到云存储。

szhorsway的博客 1856

ISBN 10位校验码的计算方法

国际标准书号(International Standard Book Number,简称ISBN),常用的有10位、13位,从2007年1月1日起国际标准正式修订为13位。 10位计算方法如下: 1、假设某国际标准书号号码前9位是:7-309-04547; 2、计算加权和:; 3、计算的余数:; 4、计算 的差: 如果,校验码是字母“X”;如果,校验码是数字“0

t_kong的专栏 9508

一文入门车载以太网:从原理到实战,看完就能上手开发

新手选型遵循“适配场景、兼顾成本、优先车规”的原则:普通场景(车载娱乐、普通诊断):100Base-T1 PHY(LAN8742)+ 非TSN交换机(SJA1105)+ STM32H743 ECU + 普通STP线缆;ADAS场景:1000Base-T1 PHY(TJA1101)+ TSN交换机(SJA1110)+ NXP S32G399 ECU + 高抗干扰STP线缆;避免过度选型:如普通娱乐场景无需选择TSN交换机、ASIL-B级芯片,否则会增加成本;

getusushu的博客 317

CCF 201312-2ISBN号码

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

lhyer的专栏 2222

【Python计量】linearmodels面板数据回归(一)

我们以伍德里奇《计量经济学导论现代方法》的”第14章高级面板数据方法“的案例14.1为例,使用jtrain中的数据来进行固定效应估计。

mfsdmlove的博客 9277

第10集:AIOps 平台架构设计!画出面试官最想看的系统全景图

本文介绍了如何将AIOps平台的六大功能模块整合为四层架构设计,并生成专业系统全景图。文章首先指出面试中架构设计能力的重要性,强调一张清晰的架构图能直观展现全局观。随后指导读者检查项目结构,准备绘图环境。核心部分详细拆解了四层架构:数据采集层(Prometheus、ELK等)、AI分析层(巡检、告警、预测等)、决策执行层(工作流引擎、自愈Agent)和展示交互层(API、控制台)。通过Python代码自动生成模块依赖关系图,并提供了面试讲解技巧。全文旨在帮助开发者在面试中系统性地展示项目架构设计能力。

qq_2937655951的博客 92

WIKIOI-1146 ISBN号码

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

程序猿之洞 1924

Python爬虫实战:构建药监局药品批准信息本地查询系统

在医药信息化时代,药品批准信息的快速查询对于医药从业者、研究人员和普通消费者都具有重要意义。国家药品监督管理局(NMPA)提供了官方的药品查询系统,但有时我们需要建立本地数据库以便批量分析或离线查询。本文将详细介绍如何使用Python爬虫技术,结合最新的异步爬虫框架和技术栈,构建一个完整的药监局药品信息本地查询系统。本系统将实现以下功能:自动化爬取药监局官网的药品批准信息数据清洗和结构化存储建立本地查询接口数据定期更新机制pythonimport os"""药品类型枚举"""

2201_76125261的博客 727

洛谷算法题 P1319压缩技术

设某汉字由 N * N 的 0 和 1 的点阵图案组成。我们依照以下规则生成压缩码。连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从左到右,由上至下。第一个数表示连续有几个 0,第二个数表示接下来连续有几个 1,第三个数再接下来连续有几个 0,第四个数接着连续几个 1,以此类推……例如: 以下汉字点阵图案:0001000000100000011110001000000100000010001111111。

2301_80147864的博客 1080

基于深度学习的茶叶等级检测识别系统:YOLOv10 + UI界面 + 数据集

YOLOv10是YOLO系列的最新版本,继承了YOLO模型的优点,并对速度和精度进行了优化。YOLOv10在目标检测中使用卷积神经网络(CNN)作为基础,通过改进网络结构和优化训练策略,实现了在更低的延迟下进行高精度的目标检测。本文详细介绍了基于YOLOv10的茶叶等级检测与识别系统的设计与实现过程。我们从数据集准备、模型训练与推理、UI界面设计等多个方面进行了详细讲解,并给出了相应的代码实现。通过本系统,我们可以高效地自动检测茶叶的等级,并通过UI界面直观地展示结果。

YOLO 764

大模型性能压测全指南:从指标到实战

本文系统阐述大模型(LLM/多模态)私有化部署性能压测方案,涵盖核心指标(TTFT、TPOT、吞吐、并发、资源占用、错误率)、四类典型压测场景及工具选型(Locust、vLLM benchmark等)。强调环境隔离、参数固定与长尾延迟分析,提出瓶颈定位思路与标准化报告模板,结合伪代码示例实现流式接口精准打点,确保测试结果真实可信,助力优化模型服务稳定性与性能。

SmallBull的博客 55

洛谷算法题 P1317 低洼地

我们在写题之前,要仔细思考这个题的判断条件,这样更有利于我们解题,防止一条路走到黑的情况发现;在这一题的解题过程中我们又又又用到了flag,在之前我们遇到过很多次,如果对这个知识点不熟悉,可以复习一下之前的文章:P1179 [NOIP2010 普及组] 数字统计-优快云博客洛谷算法题P1089 [NOIP2004 提高组] 津津的储蓄计划_在她那里,到了年末她会加上 20%20% 还给小z。因此小z制定了一个储蓄计划:每个月的-优快云博客。

2301_80147864的博客 1610

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

bfs算法题,洛谷搜索题单Meteor Shower S

还是洛谷搜索题单的一道bfs算法题,坑有点多,如果洛谷题解不容易理解的话,希望这篇文章可以帮的到你。代码每步都有很详细的解释。

heyiting666的博客 231

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

洛谷3927 [洛谷八连测] 一道中档题

题目链接 题目: 求出n!在k进制下后缀0的个数 下面记录了一下我sb的该题历程 ,建议直接空降正解 /*一改 这个是洛谷提高组测试赛第一题, 看到后想到了以前做过的求 n! 的后缀0数量,那个题的做法是数有多少因子5 于是类推就把k分解找出最大质因子,统计数量(当然这么做肯定不对),数据很水得了90分。 二改 举出了反例 ,比如说k=50 , 50=5*5*2 ,此时...

dizou7578的博客 171

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

洛谷---越狱问题【快速幂】

快速幂就是一种高效计算幂次方的方法,相对于直接讲a乘b次,快速幂的时间复杂度为O(logn),可以大大减少我们的运算次数这里举个栗子:当我们需要计算6的25次方的时候,我们通常会使用一个while循环来实现25个6进行相乘,虽然这样可以实现我们的目的,但是运行花费的时间比较多,但是当我们使用快速幂的时候,在运行上花费的时间会大量减少但是快速幂是如何实现时间复杂度降为O(logn)的呢?

2301_81253185的博客 899

【洛谷】一道类似基于大整数分解的公钥密码的算法题

发现一个类RSA数学原理的因子分解问题变体,以此留作记录。

AlanKSorata的博客 941

[洛谷P1404] 平均数

洛谷题目链接:平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m。 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来n行,每行一个整数a[i],表示序列第i个数字 输出格式: 一个整数,他是最大平均数的1000倍,如果末尾有小数,直接舍去,不要用四舍五入求整。 输入输出样例 输入样例#1: 10 6 6 ...

dengtun2502的博客 778

洛谷入门:C语言顺序类算法题

这是一道关于并联电阻计算的入门算法题。解题要点包括:1)定义返回double类型的函数R;2)浮点运算中数值需用1.0形式表示;3)使用double类型声明变量r1,r2;4)直接输出函数结果。示例代码通过R(r1,r2)函数计算并联电阻值,公式为1/(1/r1+1/r2),主函数输入两个电阻值后直接输出结果(保留两位小数)。该题主要考察顺序结构编程和浮点数运算的基本概念。

jintalien的博客 205

碎碎念——刷算法题的日子(1)

开学一周,进入了刷算法题的阶段,用一周的时间完成了洛谷新手村的任务(感觉自己蒟蒻),适当进行一下总结,之后会尽量保持一周一次总结的习惯。 新手村大部分都是些基础题,就算是赛前热身的阶段,感受一下敲代码,有技巧和难度的题也有,但是不多,下面就说几点自己的坑。 条件判断的顺序 第一次深刻感受到 || 和 &amp;amp;amp;&amp;amp;amp;的影响之大。在一个if判断语句里,如果有多个条件的话,很有必要考虑一下哪个条件...

hplong 372

构建动态更新的洛谷算法题单:从原理到实践的路径规划

在算法学习与竞赛准备中,系统化的刷题路径至关重要。其核心原理在于通过结构化的题目序列,帮助学习者循序渐进地掌握算法概念、数据结构和解题技巧。传统的静态题单面临时效性不足的挑战,难以跟上快速演变的算法竞赛趋势和题目库更新。为此,引入动态更新机制能显著提升学习路径的技术价值,它能够持续集成最新的比赛高频考点和社区热议题目,确保训练内容与当前实战紧密接轨。这种机制通常依赖自动化脚本进行数据抓取与多维度评估,并结合社区反馈进行优化,最终服务于算法知识体系的构建与薄弱环节的针对性强化。应用场景广泛覆盖从巩固语法的初学

weixin_33866037的博客 295

[洛谷P3501] [POI2010]ANT-Antisymmetry

洛谷题目链接:[POI2010]ANT-Antisymmetry 题目描述 Byteasar studies certain strings of zeroes and ones. Let be such a string. By we will denote the reversed (i.e., "read backwards") string , and by we will...

dengtun2502的博客 367
上一篇: 动态规划 走方格利用二维数组
下一篇: 求两个数的最大公约数
凌晨里的无聊人
博客等级 码龄8年 2320粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值