代码链接

PDF链接

首先要说的是这道题的难点是如何把数字输出加入逗号,毕竟数据范围并没有超过Long。当然这个难点也不是问题,将数字转为字符串,C中就有这样的函数,然后再用 %3==0 这样来控制输出 。

但我最近出于想要建立自己的代码库的想法,而且这道题我的第一反应其实是高精度运算,所以一是想练练手,二是以后想用高精度可以直接复制了,我就写的复杂一点。

解题思路

程序的实现需要四个函数。

函数一: char* highAdd(char* a,char* b,char *c) //c=a+b

原谅我蹩脚的英语,这个词我的本意是无负数的高精度加法,将数字以字符串读入(负号另处理,不传入),然后逐位相加,可以理解小学的竖式加法。将结果存在c中,因为不确定位数,所以需要除去0位,返回非零位的指针。比如三位数加一位数答案有可能是四位和三位(999+1和100+1),所以我预设的是四位,最后再除零。

函数二: char* highDel(char* a,char* b,char *c) //c=a-b

这个函数用在存在负号的情况,其中a的值必大于b的值,否则会出错,实现过程同 highAdd ,竖式计算。

函数三: int compare(char* a,char* b)

这个compare就是为了上面的 highDel 服务的,判断a和b的值谁大,当然不能处理有负号的情况。负号的处理我放在了主函数中。

函数四: void formatPrint(char* a)

这个函数就是将最后的结果进行规范输出,因为是对字符串进行操作,实现比较简单,就不细讲了。

主函数

主函数中读取两个数,依据负号分为三种情况依次处理。

  • 没有负号

直接两数相加,规范输出

  • 都有负号

将两数的非负号位进行相加,最后输出前加个 - 就行了。

  • 一个负号

分两种情况,正数大于负数的绝对值的话可以直接调用highDel,然后输出。正数小于负数的绝对值的话将负数的绝对值减去正数,然后在输出结果前加个负号就可以了。

过程

思路有了话,过程也就没什么可说的的,就是照着自己的设想实现,只要保证函数的功能能够实现,那么程序的主体就可以工作,要非要说什么调试的经历的话,实现逗号的输出算一个,虽然知道要用 %3 来实现逗号输出的控制,但用什么来求余就需要控制,是加1还是加2还是不用加,我是逐个试过去,然后还要注意头和尾不能输出逗号,需要再添加一个条件来控制。

其次要说的就是加法函数了,本来我是没打算输出的,我想将c的指针后移来除零,但发现没用,后来想了想,指针指向的内容在函数内可以改变,但指针本身并不可以改变,所以我就返回一个指针来指向第一个非零位,对了,还有答案为0的话还要将0保留,需要添加条件判断,不能直接跳过。

提交列表

简单测试通过后直接AC了

最后

写完后回看自己的代码总觉的实现的不是很好,感觉有些不必要的操作,比如对负号的处理好像有点复杂,和我想象中的高精度运算有点差距。但我目前也没什么更好的想法,就先这样吧。

1001 A+B的更多相关文章

  1. SCNU 2015ACM新生赛初赛【1001~1011】个人解题思路

            题目1001:       大意:已知$n$个角色,$m$种怪物种族,$k$个怪物,给出一组角色编号,编号$P_{i}$的角色能肝死编号$i$的怪物,对于给定的一组怪物编号,为了打通关 ...

  2. BZOJ 1001: [BeiJing2006]狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 20029  Solved: 4957[Submit][ ...

  3. 1001 数组中和等于K的数对 1090 3个数和为0

    二分查找.对数组每个V[i],在其中查找K-V[i],查找完成后修改v[i]避免重复输出 #include<iostream> #include<algorithm> #inc ...

  4. PAT Basic Level 1001

    大纲考察内容 数据存储结构:数组.链 基础算法:递归.排序.计算时间复杂度.空间复杂度.分析算法稳定性 1001.害死人不偿命的(3n+1)猜想 (15) https://www.patest.cn/ ...

  5. acm入门 杭电1001题 有关溢出的考虑

    最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...

  6. 1001. A+B Format (20)

    原题连接:https://www.patest.cn/contests/pat-a-practise/1001 题目如下: Calculate a + b and output the sum in ...

  7. ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []

    我们生产服务器中的一个数据库发出监控告警日志的邮件,内容如下所示,在31号09:11分出现了大名鼎鼎的ORA-00600错误. Dear All: The Instance xxx' alert lo ...

  8. 山东第一届省赛1001 Phone Number(字典树)

    Phone Number Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 We know that if a phone numb ...

  9. 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)

    版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...

  10. HOJ 1001: A+B; 1002: A+B+C

    两道水题,用来熟悉 HOJ 的提交系统. 1001:输入两个整数 A, B (0 <= A,B <= 10),输出 A+B. #include <iostream> using ...

随机推荐

  1. ZooKeeper实现分布式队列Queue

    ZooKeeper实现分布式队列Queue 让Hadoop跑在云端系列文章,介绍了如何整合虚拟化和Hadoop,让Hadoop集群跑在VPS虚拟主机上,通过云向用户提供存储和计算的服务. 现在硬件越来 ...

  2. 20155237 2016-2017-2 《Java程序设计》第2周学习总结

    教材学习内容总结 通过教材了解了JAVA可区分为基本类型和类类型(参考类型)两大类型系统. 基本类型 分类 整数 short(2) / int(4) / long(8) 字节 byte(-128-12 ...

  3. JavaEE笔记(六)

    实现Action的几种方法1. implements Action2. extends ActionSupport3. 也可以不继承任何父类不实现任何借口 #当一个类有多个方法 package com ...

  4. JavaScript总结(四)

    详解BOM(浏览器对象模型(Browser Object Model)) ✍ Window对象方法 方法 描述 alert() 显示带有一段消息和一个确认按钮的警告框 blur() 把键盘焦点从顶层窗 ...

  5. jQuery学习-基本选择器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  6. [Deep-Learning-with-Python]神经网络的数学基础

    理解深度学习需要熟悉一些简单的数学概念:Tensors(张量).Tensor operations 张量操作.differentiation微分.gradient descent 梯度下降等等. &q ...

  7. 10.30 开课一个月零二十六天 (PHP数据库修改)

    1.先做一个修改页面 <body> <!--这个页面需要让用户看到一些数据,所以不是一个纯php页面,页面效果和增加页面的效果非常相似,直接把增加页面的代码复制过来--> &l ...

  8. js 知识点整理

    1. indexOf 与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexOf( ...

  9. SpringBoot中使用UEditor基本配置(图文详解)

    SpringBoot中使用UEditor基本配置(图文详解) 2018年03月12日 10:52:32 BigPotR 阅读数:4497   最近因工作需要,在自己研究百度的富文本编辑器UEditor ...

  10. 牛客OI周赛3-提高组-B-1408[dp]

    题意 给你长度为 \(n\) 的两个排列 \(A,B\) 组成的序列,求最少的交换相邻数字的次数使得 \(A,B\) 分别有序. \(n\leq 2000\) . 分析 如果只有一个排列时最少交换次数 ...