PAT A1065 A+B and C (64bit)

  • 试验大整数运算?我真不是故意的,只因为上了贼船,便想一条路走到黑。。。
  • 对string不知抱有何种执念,直到搞到需要比较大小的时候软了,觉得还不如用long long直接比,然而换成long long之后又并没有直接比,大概是因为异号的时候要用减法,仍然需要知道绝对值大的那个,作为第一个参数,并让娃跟他一个姓
  • 不过后来看到网上有同学全程用的string
  • 绝对值开始用abs来着,试了C++ 11下可以接受long long,but我的电脑上不行,又不敢直接加负号,怕取到下限时溢出。。。只好写了个cmp统一解决比较大小和绝对值的问题,,,
  • 负数转BigInt的时候会把每一位都给搞成负的(a % b,a < 0时,不管b的正负,结果都是负的),又打了补丁,浪费感情,还不如用string。。。
  • 大整数加减法别忘了出了循环之后还有一件事情要做(进位和前面的0)
  • 最最可恶的是,这一番作死的操作之后,居然最后一个测试点挂了。。。不知道是为毛
#include <iostream>using namespace std;struct BigInt{int len = 0;int data[100] = {0};int sign = 1;
};BigInt convert(long long ll){BigInt res;if(ll < 0) res.sign = -1;do{res.data[res.len ++] = ll % 10;if(res.sign == -1) res.data[res.len - 1] = -res.data[res.len - 1];ll /= 10;}while(ll);return res;
}BigInt add(BigInt a,BigInt b){BigInt res;int carry = 0;for(int i = 0;i < a.len || i < b.len;i ++){res.data[res.len ++] = (a.data[i] + b.data[i] + carry) % 10;carry = (a.data[i] + b.data[i] + carry) / 10;}if(carry) res.data[res.len ++] = 1;return res;
}BigInt _minus(BigInt a,BigInt b){BigInt res;for(int i = 0;i < a.len || i < b.len;i ++){if(a.data[i] < b.data[i]){a.data[i] += 10;a.data[i + 1] --;} res.data[res.len ++] = a.data[i] - b.data[i];}while(res.data[res.len - 1] == 0 && res.len > 1){res.len --;}return res;
}int cmp(BigInt a,BigInt b,bool abs){if(!abs && a.sign != b.sign) return a.sign - b.sign;else{if(a.len != b.len){int diff = (a.len - b.len);if(!abs) diff *= a.sign;return diff;} else{for(int i = a.len - 1;i >= 0 ;i --){if(a.data[i] != b.data[i]){int diff = (a.data[i] - b.data[i]);if(!abs) diff *= a.sign;return diff;}}return 0;}}
}#define DEBUG int main(){#ifdef DEBUGfreopen("1.txt","r",stdin);
#endifint num;cin >> num;for(int i = 0;i < num;i ++){long long A,B,C;cin >> A >> B >> C;C = C << 62;cout << C << endl;BigInt a = convert(A);BigInt b = convert(B);BigInt c;if(a.sign == b.sign){c = add(a,b);c.sign = a.sign;}else{if(cmp(a,b,true) > 0){c = _minus(a,b);c.sign = a.sign;}  else{c = _minus(b,a);c.sign = b.sign;} }printf("Case #%d: ",i + 1);BigInt cc = convert(C);cout << "c = " << c.sign << ' ';for(int i = c.len - 1;i >= 0 ;i --) cout << c.data[i];if(cmp(c,cc,false) > 0) printf("true\n");else printf("false\n");}return 0;
}

PAT A1065 A+B and C (64bit) ——斜风细雨不须归相关推荐

  1. PAT A1065 A+B and C (64bit) (20 分)

    AC代码 #include <cstdio>int main() {#ifdef ONLINE_JUDGE#elsefreopen("1.txt", "r&q ...

  2. PAT 1065 A+B and C (64bit) (20)

    1065. A+B and C (64bit) (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming G ...

  3. 【晴神宝典刷题路】codeup+pat 题解索引(更新ing

    记录一下每天的成果,看多久能刷完伐 codep pat乙级 pat甲级 c2 c/c++快速入门 <算法笔记>2.2小节--C/C++快速入门->顺序结构 例题1-1-1 按要求输出 ...

  4. 【PAT甲级】A1051-A1100刷题记录

    文章目录 (栈) A1051 Pop Sequence (25 分) 0.47 (静态链表) A1052 Linked List Sorting (25 分) 0.21 (静态树+先根遍历DFS) A ...

  5. 【置顶】【PAT】PAT甲级题目及分类总结(持续更新ing)

    在2019年3月底,我决定考浙大计院,经过一个月还算凑合的学习,痛定思痛,决定整理整理自己的博客. 粗略估计,大概一个月的时间里我AC了31道题,大概用时40个小时上下,毕竟还要把大部分时间花在笔试上 ...

  6. 胡凡 《算法笔记》 上机实战训练指南 3.1 简单模拟

    胡凡 <算法笔记> 上机实战训练指南 3.1 持续更新中 , 菜鸡的刷题笔记- 大学到现在了还没咋好好刷过题,该push自己了- 文章目录 胡凡 <算法笔记> 上机实战训练指南 ...

  7. Eclipse不能查看Servler源码问题

    Eclipse下载.添加Servlet 源码下载: http://archive.apache.org/dist/tomcat 参考文章:斜风细雨不须归呐 查看是否缺少Servlet源码 在Eclip ...

  8. 繁星课堂oracle,《繁星》课堂实录及点评

    执教  李文斌 李老师的个人素质太强了:普通话,好听:粉笔字,好看:评价语,入心-- 好吧,这是一节很有诗歌味道的课. 课前交流 我们第一次见面,老师先和同学们做一个自我介绍,我姓李,你们可以叫我 李 ...

  9. 磨金石教育摄影技能干货分享|中国风摄影大师——郎静山

    说到中国风摄影,你想到的画面是什么样子的?故宫.长城.苏州园林.大红灯笼高高挂,反正离不开传承了千八百年的古建筑.仿佛没有了这些历史古董的元素就没有中国味道似的. 其实中国风,其内核应该是传统的审美观 ...

最新文章

  1. Sparse low rank approximation
  2. java treeset 重复,关于 TreeSet 为什么我这样写,还有是有重复的记录啊啊啊啊
  3. HDU(1572),最短路,DFS
  4. android 控件方向旋转90度,android – 旋转视图层次90度
  5. 用Java开发自己的Kubernetes控制器,想试试吗?
  6. python-week6
  7. 状态模式 有限状态机_有限状态机解释
  8. 入门机器学习(三)--课后作业解析-线性回归(Python实现)
  9. delphi2007、2010无法二次启动,报错 EditorLineEnds.ttr 另一个程序正在使用此文件
  10. 如何联合R与Hadoop更好处理大数据!
  11. 非线性系统的理论和方法,神经网络的非线性
  12. 计算机科学与技术的研究背景,计算机科学与技术发展背景
  13. 我们最畅销的30本好书,都在这了
  14. 主题:讲解三层代码讲解--第三课(*****) DATE:2004-05-28
  15. 小米平板2可以装鸿蒙系统,详细教程!教你小米平板2轻松刷Win10
  16. 使用 C# 实现 CJ-T188 水表协议和 DL-T645 电表协议的解析与编码
  17. 计算机基础2,计算机基础总结2
  18. python合并word表格单元格_Python实战009:读取Word文档中的表格数据及表格合并问题解决...
  19. 学好Python的未来7大就业方向,月薪不低于2w!
  20. java条码扫描_Java上的条形码扫描仪实现

热门文章

  1. c#把word文档转换为html页面
  2. 糗百新鲜事——爬虫python
  3. 扫地机器人朋友圈文案_扫地机器人方案
  4. Ubuntu18.04平台下用GitHub搭建个人博客(含域名绑定和更换主题)
  5. 2015061802 - 有道网页翻译
  6. OSINT 和 15 大开源情报工具
  7. C#(三十二)之Windows绘图
  8. 注册表(regedit)
  9. UGUI优化:使用镜像图片
  10. 解决The package java.awt is not accessible