1001 A+B
首先要说的是这道题的难点是如何把数字输出加入逗号,毕竟数据范围并没有超过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的更多相关文章
- SCNU 2015ACM新生赛初赛【1001~1011】个人解题思路
题目1001: 大意:已知$n$个角色,$m$种怪物种族,$k$个怪物,给出一组角色编号,编号$P_{i}$的角色能肝死编号$i$的怪物,对于给定的一组怪物编号,为了打通关 ...
- BZOJ 1001: [BeiJing2006]狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 20029 Solved: 4957[Submit][ ...
- 1001 数组中和等于K的数对 1090 3个数和为0
二分查找.对数组每个V[i],在其中查找K-V[i],查找完成后修改v[i]避免重复输出 #include<iostream> #include<algorithm> #inc ...
- PAT Basic Level 1001
大纲考察内容 数据存储结构:数组.链 基础算法:递归.排序.计算时间复杂度.空间复杂度.分析算法稳定性 1001.害死人不偿命的(3n+1)猜想 (15) https://www.patest.cn/ ...
- acm入门 杭电1001题 有关溢出的考虑
最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...
- 1001. A+B Format (20)
原题连接:https://www.patest.cn/contests/pat-a-practise/1001 题目如下: Calculate a + b and output the sum in ...
- ORA-00600: internal error code, arguments: [17281], [1001], [0x1FF863EE8], [], [], [], [], []
我们生产服务器中的一个数据库发出监控告警日志的邮件,内容如下所示,在31号09:11分出现了大名鼎鼎的ORA-00600错误. Dear All: The Instance xxx' alert lo ...
- 山东第一届省赛1001 Phone Number(字典树)
Phone Number Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 We know that if a phone numb ...
- 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...
- HOJ 1001: A+B; 1002: A+B+C
两道水题,用来熟悉 HOJ 的提交系统. 1001:输入两个整数 A, B (0 <= A,B <= 10),输出 A+B. #include <iostream> using ...
随机推荐
- BZOJ4006: [JLOI2015]管道连接(斯坦纳树,状压DP)
Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 1171 Solved: 639[Submit][Status][Discuss] Descripti ...
- JavaWeb基础—过滤器Filter
一.概念 JavaWeb三大组件之一(组件都有一个特性,需要在web.xml中配置) 过滤器:会在一组资源(jsp servlet等)的前面执行,可以让请求得到目标资源,也可以终止请求,不再继续 也就 ...
- JavaWeb基础—数据库连接池DBCP、C3P0
一.基本概念 数据库连接池负责分配.管理和释放数据库连接 数据库连接池:(池用map来实现居多) 用处:为了可重用(销毁创建麻烦,开销大)(招培训老师的例子) 二.编写实现数据库连接池 池参数: 初识 ...
- UWP Read write File -StorageFile
// private void MainPage_Loaded(object sender, RoutedEventArgs e) { GetFileAsync(); } public async v ...
- WPF 绑定StaticResource到控件的方法
原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的<SolidColorBrush x:Key=&q ...
- WPF 事件触发命令
方法一使用mvvmlight: xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Int ...
- c++ 创建二叉树
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> ...
- 基于Keras的imdb数据集电影评论情感二分类
IMDB数据集下载速度慢,可以在我的repo库中找到下载,下载后放到~/.keras/datasets/目录下,即可正常运行.)中找到下载,下载后放到~/.keras/datasets/目录下,即可正 ...
- 9.22 下午 (document对象)
document对象 1.找元素:(1)gerElementById()根据ID找 (2)gerElementByClassName()根据Class找,返回数组 (3)gerElem ...
- 【Maven】在pom.xml文件中使用resources插件的小作用
在spring boot创建web项目打包为jar包的过程中,是不会把webapp目录下的页面也打包进去的,这个时候接触到了maven的 resources插件. ================== ...