51nod 1005 大数加法
来源:互联网 发布:php aes解密 乱码 编辑:程序博客网 时间:2024/06/06 12:56
51nod 1005 大数加法
心好累。。。
#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>#include <queue>#include <stack>#include <vector>using namespace std;#define INF 0x3f3f3f#define pi acos(-1.0)#define MAX 1000010#define N 11050char a[N],b[N];int num1[N],num2[N];int flag1 = 0,flag2 = 0;void add(){ int len1 = strlen(a); int len2 = strlen(b); int k = 0; for(int i = len1-1; i >= flag1; i--) num1[k++] = a[i]-'0'; len1 = k; k = 0; for(int i = len2-1; i >= flag2; i--) num2[k++] = b[i]-'0'; len2 = k; int flag = 0; int lenmax = max(len1,len2); for(int i = 0; i < lenmax; i++) { if(i < lenmax) num1[i] = num1[i]+num2[i]; else if(i<len2 && i>=len1) num1[i] = num2[i]; num1[i] += flag; if(num1[i] > 9) { num1[i] -= 10; flag = 1; } else flag = 0; } if(flag1 && flag2) printf("-"); if(flag == 1) printf("%d",flag); for(int i = lenmax-1; i >= 0; i--) printf("%d",num1[i]); printf("\n");}void dec(){ int len1 = strlen(a); int len2 = strlen(b); int k = 0; for(int i = len1-1; i >= flag1; i--) num1[k++] = a[i]-'0'; len1 = k; k = 0; for(int i = len2-1; i >= flag2; i--) num2[k++] = b[i]-'0'; len2 = k; int lenmax = max(len1,len2); int bian = 0; if(lenmax != len1) bian = 1; else if(len1 == len2) { for(int i = lenmax-1; i >= 0; i--) { if(num1[i] < num2[i]) { bian = 1; break; } else if(num1[i] > num2[i]) break; } } int t[N]; if(bian == 1) { for(int i = 0 ;i < len1; i++) t[i] = num1[i]; for(int i = 0; i < len2; i++) num1[i] = num2[i]; for(int i = 0; i < len1; i++) num2[i] = t[i]; int temp = len1; len1 = len2; len2 = temp; } int c[N]; int flag = 0; for(int i = 0; i < lenmax; i++) { if(i < lenmax) c[i] = num1[i]-num2[i]; if(i < len1 && i >= len2) c[i] = num1[i]; c[i] += flag; if(c[i] < 0) { c[i] += 10; flag = -1; } else flag = 0; } if(bian == 1 && flag2 == 1) printf("-"); if(bian == 0 && flag1 == 1) printf("-"); int pan_0 = 0; for(int i = lenmax-1; i >= 0; i--) { if(pan_0 == 0 && c[i] != 0) pan_0 = 1; if(pan_0 == 1) printf("%d",c[i]); } printf("\n");}int main(){ scanf("%s%s",&a,&b); if(a[0] == '-') flag1 = 1; if(b[0] == '-') flag2 = 1; if(flag1 ^ flag2 == 0) add(); else dec(); return 0;}/*7274263886340608722145353913216918286860-4745949428771219202495704324129525988945*/
0 0
- 51nod-1005 大数加法
- 51nod 1005《《大数加法》》
- 51nod 1005 大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法
- 【51nod】1005 大数加法
- 51Nod 1005 大数加法
- 51Nod--1005 大数加法
- 51Nod 1005 大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法
- 51Nod-1005-大数加法
- 51Nod-1005-大数加法
- 51Nod 1005 大数加法
- 51Nod 1005 大数加法
- 51nod 1005 大数加法 大数运算
- maven常用插件配置
- DataSet,DataTable,DataReader,DataAdapter 区别
- tensorflow原理
- 解决项目上的红叉和红色感叹号的方法。
- 《ROS精品入门》学习笔记一:ROS简介
- 51nod 1005 大数加法
- 导航栏
- 第一个只出现一次的字符
- 机器学习中防止过拟合的处理方法
- Android studio快捷键整理
- Asp.net Json序列化
- 采用DBUtil框架实现AOP(面向切面编程)对事务的处理
- RabbitMQ消息队列介绍
- hdu1062Text Reverse 解题报告