题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1005

要处理符号,还要特别注意0和连续进位等情况。偷懒使用strcmp,但是前提必须是长度相等,否则是字典序。

 #include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath> using namespace std; const int maxn = ;
char ca[maxn], cb[maxn], cs[maxn]; void add(char* ca, char* cb) {
int a[maxn];
int b[maxn];
memset(a, , sizeof(a));
memset(b, , sizeof(b));
int la = strlen(ca);
int lb = strlen(cb);
for(int i = ; i < la; i++) a[i] = ca[la-i-] - '';
for(int i = ; i < lb; i++) b[i] = cb[lb-i-] - '';
for(int i = ; i < maxn; i++) {
a[i] += b[i];
a[i+] += a[i] / ;
a[i] %= ;
}
int p = maxn;
while(p--) if(a[p] != ) break;
for(int i = p; i >= ; i--) printf("%d", a[i]);
printf("\n");
} void sub(char* ca, char* cb) {
int a[maxn];
int b[maxn];
memset(a, , sizeof(a));
memset(b, , sizeof(b));
int la = strlen(ca);
int lb = strlen(cb);
for(int i = ; i < la; i++) a[i] = ca[la-i-] - '';
for(int i = ; i < lb; i++) b[i] = cb[lb-i-] - '';
for(int i = ; i < la; i++) {
if(a[i] >= b[i]) a[i] -= b[i];
else {
a[i] = a[i] - b[i] + ;
a[i+]--;
}
}
int p = maxn;
while(p--) if(a[p] != ) break;
for(int i = p; i >= ; i--) printf("%d", a[i]);
printf("\n");
} int main() {
// freopen("in", "r", stdin);
memset(ca, , sizeof(ca));
memset(cb, , sizeof(cb));
scanf("%s %s", ca, cb);
int la = strlen(ca);
int lb = strlen(cb);
if(ca[] == '' && cb[] == '') printf("0\n");
else if(ca[] == '-' && cb[] == '-') {
printf("-");
add(ca+, cb+);
}
else if(ca[] != '-' && cb[] != '-') add(ca, cb);
else if(ca[] == '-' && cb[] != '-') {
if(la - < lb) sub(cb, ca+);
else if(strcmp(ca+, cb) > ) {
printf("-");
sub(ca+, cb);
}
else if(strcmp(ca+, cb) == ) printf("0\n");
else sub(cb, ca+);
}
else if(ca[] != '-' && cb[] == '-') {
if(la - < lb) sub(ca, cb+);
else if(strcmp(ca, cb+) > ) sub(ca, cb+);
else if(strcmp(ca, cb+) == ) printf("0\n");
else {
printf("-");
sub(cb+, ca);
}
}
return ;
}

[51NOD]大数加法(模拟)的更多相关文章

  1. 51NOD 大数加法以及python写法

    练练 大数加法一般为小学生式的"竖式计算"要特别注意的是借位与进位的问题(先给看c++写法,我怕先看了python写法,会看不下去c++写法)这题还有要注意的是 1.同符号的话,直 ...

  2. 51Nod大数加法(两个数正负都可)

    很多大数的问题都运用模拟的思想,但是这个说一样也一样,但是难度较大,很麻烦,我自己谢写了100多行的代码,感觉很对,但就是WA.其实个人感觉C和C++没有大数类,是对人思想和算法的考验,但是有时候做不 ...

  3. POJ 2506 Tiling (递推 + 大数加法模拟 )

    Tiling Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7965   Accepted: 3866 Descriptio ...

  4. 大数高精度加减乘除 51nod 1005 大数加法

    1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B ...

  5. 51nod 1005 大数加法

    #include<iostream> #include<string> using namespace std; #define MAXN 10001 },b[MAXN]={} ...

  6. c#大数加法

    在C#中,我们经常需要表示整数.但是,c#的基本数据类型中,最大的long也只能表示-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之间的数 ...

  7. 【大数加法】POJ-1503、NYOJ-103

    1503:Integer Inquiry 总时间限制:  1000ms 内存限制:  65536kB 描述 One of the first users of BIT's new supercompu ...

  8. 大数加法之C语言函数法(只有正数版)

         由于某些原因,我于今天2017-4-19将我的博文搬到博客园了,以后我就在这里扎根了.         之前想过在博客写文章方便日后复习,但一直未能实现,所以,现在这篇是我个人人生中第一篇博 ...

  9. 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】

    1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度  ...

随机推荐

  1. 浅谈KL散度

    一.第一种理解 相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence) ...

  2. [工作积累] Android: Hide Navigation bar 隐藏导航条

    https://developer.android.com/training/system-ui/navigation.html View decorView = getWindow().getDec ...

  3. Nsdate的各种常用操作

    // //  NVDate.h // //  Created by Noval Agung Prayogo on 2/5/14. //  Copyright (c) 2014 Noval Agung ...

  4. BZOJ1502: [NOI2005]月下柠檬树

    Simpson法相当好用啊!神奇的骗分算法! /************************************************************** Problem: 1502 ...

  5. (转)8 reviews about de novo genome assembly

    转自:http://dskernel.blogspot.com/2012/04/8-reviews-about-de-novo-genome-assembly.html 8 reviews about ...

  6. POJ 2151 Check the difficulty of problems (概率dp)

    题意:给出m.t.n,接着给出t行m列,表示第i个队伍解决第j题的概率. 现在让你求:每个队伍都至少解出1题,且解出题目最多的队伍至少要解出n道题的概率是多少? 思路:求补集. 即所有队伍都解出题目的 ...

  7. POJ 1459

    #include<iostream> #define MAXN 105 #include"queue" #define big_num 100000000 using ...

  8. ubuntu下安装nodejs

    前言 继前几天在wins环境下使用cygwin模拟器安装nodejs出现了一些问题后,今天我决定在ubuntu下安装nodejs,安装过程非常顺利,没有报错,看来还是linux环境给力啊,由于刚接触l ...

  9. ExtJs布局之tabPanel

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  10. (5)VS2010无法打开gl/glaux.h头文件的解决方法

    方法:下载缺少的文件. 参考自:http://blog.csdn.net/delphiwcdj/article/details/6326586 下载源1:CSDN下载OpenGL 安装包所需文件下载: ...