day1 C语言:对于P1055 ISBN号码的代码优化及多解
day1
C语言:对于P1055 ISBN号码的代码优化及多解
先看题目

直接说最优解,其他方法后置
第一部分
1.第一个点是数据的输入,本人第一的想法是直接用int类型去接受数据,但因为“-”的存在,在取得各位数字时会用到复杂循环和取余计算,所以这里用到char类型输入数据去取得各个位上的数字,从而简化计算,不涉及复杂的取余。
2.第二个点是m的引入,我们在输入字符串的时候,“-”使得数字在字符数组中的个数向后推移了一个单位,在计算时必须利用i和m去调整计算时的系数(如果不去调整,就会使得“-”参与了运算而错误)
3.第三个点是计算时利用ASCII表,数字字符直接减去48,从而得到相应的int类型的数字
第二部分
第一部分得到sum之后,将sum转化为字符,将其与初始数据中的最后一个数值进行比较,根据要求printf right,或者输出修改后的字符串
注意 1.当遇到sum取余之后等于10时,因为无法用一个字符去表示10,所以利用ASCII中9后面是“:”,从而使用“:”去代表10
2.将字符变量赋值给另一个字符变量时,可以用到下述格式,注意括号必须加 num[12] = ('%c',sum);
最优解完整代码如下
第二种解法:利用switch暴力枚举

因为有特殊情况"X"的存在,所以直接switch一一对应就避免了对“X”的单独考虑,不推荐用,看看就好了
这道题到这里就结束啦,后面会更新更多题的解题思路
day1 C语言:对于P1055 ISBN号码的代码优化及多解的更多相关文章
- 洛谷 P1055 ISBN号码【字符串+模拟】
P1055 ISBN号码 题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔 ...
- 【洛谷新手村】简单字符串 p1055 ISBN号码
p1055 ISBN号码[传送门] 算法标签什么的: 思路:直接以字符串的形式读入这一串数字,然后for循环对字符串进行处理,字符串中的数字存进数组中(如果是X,存为10):然后再根据要求判断是否是正 ...
- 字符、散列、模拟--P1055 ISBN号码
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别 ...
- 洛谷P1055 ISBN号码【字符数组处理】
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括 99 位数字. 11 位识别码和 33 位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号 ...
- 洛谷P1055 ISBN号码
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括 999 位数字. 111 位识别码和 333 位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上 ...
- P1055 ISBN号码
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字.11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位 ...
- P1055 ISBN号码(getline(cin,s); printf("%s",str); )
题目描述 每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字.1 位识别码和 3 位分隔符,其规定格式如 x-xxx-xxxxx-x,其中符号 - 就是分隔符(键盘上的 ...
- Java实现 洛谷 P1055 ISBN号码
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...
- NOIP2008 ISBN号码(一桶水)【A005】
[A005]NOIP2008 ISBN号码(一大桶水)[难度A]———————————————————————————————————————————————————————————————————— ...
- AC日记——ISBN号码 openjudge 1.7 29
29:ISBN号码 总时间限制: 1000ms 内存限制: 65536kB 描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如“x ...
随机推荐
- Java输出100以内的所有质数
代码如下: public static void main(String[] args) { for(int k=2;k<=100;k++) { boolean flag = true; for ...
- 【笔试实战】LeetCode题单刷题-编程基础 0 到 1【三】
682. 棒球比赛 题目链接 682. 棒球比赛 题目描述 你现在是一场采用特殊赛制棒球比赛的记录员.这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分. 比赛开始时,记录是空白的.你 ...
- 计算机COM口数据测试
计算机COM口数据测试一.基本使用流程 程序需要以管理员身份运行,COM口回路测试需短接2,3pin,测试时候使用控制台,配置测试相关路径,并在测试完成后 1.测试配置路径D:\bigdata\INI ...
- 【Docker】迷你使用手册
一.安装与配置 安装: # Centos7 yum install docker 启动 & 设为开机启动: systemctl start docker.service systemctl e ...
- VSCode中的快捷键
VS Code中的快捷键 文件和编辑操作 Ctrl+S:保存文件 Ctrl+K S:保存全部文件 Ctrl+C:复制 Ctrl+V:粘贴 Ctrl+X:剪切 Ctrl+F:查找 Ctrl+H:替换 C ...
- Notepad正则表达式用法
https://blog.csdn.net/cuckoo1/article/details/52165449
- c++中unique_ptr 的使用和理解
unique_ptr 的使用 std::unique_ptr是c++11起引入的智能指针,为什么必须要在c++11起才有该特性,主要还是c++11增加了move语义,否则无法对对象的所有权进行传递. ...
- SpringCloudAlibaba框架学习
遇到问题找了各种办法都没有解决,就reload maven,再不行就重启idea,重启电脑.(有奇效,我好几次就这么解决的,可能是我电脑配置太拉了) 注册中心 - Nacos 配置文件优先级:本地配置 ...
- Mysql高级8-触发器
一.触发器 触发器是与表有关的数据库对象,指在insert/update/delete之前或者之后,触发并执行触发器中定义的sql语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志 ...
- .NET 操作 TDengine .NET ORM
TDengine 是国内比较流的时序库之一,支持群集并且免费,在.NET中资料比较少,这篇文章主要介绍SqlSugar ORM来操作TDengine 优点: 1.SqlSugar支持ADO.NET操作 ...

