昨天做的那题其实和大整数相加类似。记得当初我大一寒假就卡在这1002题上,结果之后就再也没写题。。。

到今天终于把大整数相加写了一遍。

不过写的很繁琐,抽时间改进一下写简洁一点。

#include<queue>

#include<math.h>

#include<stdio.h>

#include<string.h>

#include<iostream>

#include<algorithm>

using namespace std;

#define N 1215

char a[N],b[N],c[N];

char e[N],d[N];

void reverse(char a[])

{

    int len=strlen(a);

    for(int i=0;i<len/2;i++)

    {

        swap(a[i],a[len-i-1]);

    }

}

int main()

{

    int T,Case=1;

    cin>>T;

    while(T--)

    {

        scanf("%s%s",a,b);

        int len_a=strlen(a);

        int len_b=  strlen(b);

        strcpy(e,a);

        strcpy(d,b);

        reverse(a);

        reverse(b);

        int jin=0;

        for(int i=0;i<max(len_a,len_b);i++)

        {

//            cout<<b[i]<<endl;

            if(a[i]=='\0')

            {

                if(jin)

                {

                    c[i]=b[i]-'0'+1;

                    jin=0;

                    if(c[i]>=10)

                    {

                        if(i==max(len_a,len_b)-1)

                        {

                            c[i]=c[i]-10+'0';

                            c[i+1]='1';

                            c[i+2]=0;

                        }

                        else

                        {

                            c[i]=c[i]-10+'0';

                            jin=1;

                        }

                    }

                    else

                    {

                        c[i]=c[i]+'0';

                    }

                }

                else

                {

                    c[i]=b[i];

                    jin=0;

                }



            }

            else if(b[i]=='\0')

            {

//                printf("bbbbbjin=%d\n",jin);

                if(jin)

                {

                    c[i]=a[i]-'0'+1;

                    jin=0;

                    if(c[i]>=10)

                    {

                        if(i==max(len_a,len_b)-1)

                        {

                            c[i]=c[i]-10+'0';

                            c[i+1]='1';

                            c[i+2]=0;

                        }

                        else

                        {

                            c[i]=c[i]-10+'0';

                            jin=1;

                        }

                    }

                    else

                    {

                        c[i]=c[i]+'0';

                    }

                }

                else

                {

                    c[i]=a[i];

                    jin=0;

                }

            }

//            printf("%c %c %c\n",a[i],b[i],jin);

            else {



//            printf("%c %c\n",a[i],b[i]);

            c[i]=a[i]+b[i]+jin-'0'*2;

//            printf(" *  %d \n",c[i]);

            jin=0;

            if(c[i]>=10)

            {

                if(i==max(len_a,len_b)-1)

                {

                    c[i]=c[i]-10+'0';

                    c[i+1]='1';

                    c[i+2]=0;

                }

                else

                {

                    c[i]=c[i]-10+'0';

                    jin=1;

//                    printf("jin=%d",jin);

                }

            }

            else

                c[i]=c[i]+'0';

//            printf(" #  %d %c\n",c[i],c[i]);

        }



        }



        for(int i=strlen(c)-1;i>0;i--)

        {

            if(c[i]=='0')

                c[i]='\0';

            else

            {

                break;

            }

        }

        reverse(c);

        printf("Case %d:\n",Case++);

        printf("%s + %s = %s\n",e,d,c);

        if(T)puts("");

        memset(a,0,sizeof(a));

        memset(b,0,sizeof(b));

        memset(c,0,sizeof(c));

        memset(d,0,sizeof(d));

        memset(e,0,sizeof(e));



    }

    return 0;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 1002 分类: ACM 2015-06-18 23:03 9人阅读 评论(0) 收藏的更多相关文章

  1. 动态链接库(DLL) 分类: c/c++ 2015-01-04 23:30 423人阅读 评论(0) 收藏

    动态链接库:我们经常把常用的代码制作成一个可执行模块供其他可执行文件调用,这样的模块称为链接库,分为动态链接库和静态链接库. 对于静态链接库,LIB包含具体实现代码且会被包含进EXE中,导致文件过大, ...

  2. 认识C++中的临时对象temporary object 分类: C/C++ 2015-05-11 23:20 137人阅读 评论(0) 收藏

    C++中临时对象又称无名对象.临时对象主要出现在如下场景. 1.建立一个没有命名的非堆(non-heap)对象,也就是无名对象时,会产生临时对象. Integer inte= Integer(5); ...

  3. hilbert矩阵 分类: 数学 2015-07-31 23:03 2人阅读 评论(0) 收藏

    希尔伯特矩阵 希尔伯特矩阵是一种数学变换矩阵 Hilbert matrix,矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标. 即: [1,1/2,1/3,--,1/n] ...

  4. Windows7下QT5开发环境搭建 分类: QT开发 2015-03-09 23:44 65人阅读 评论(0) 收藏

    Windows7下QT开法环境常见搭配方法有两种. 第一种是:QT Creator+QT SDK: 第二种是:VS+qt-vs-addin+QT SDK: 以上两种均可,所需文件见QT社区,QT下载地 ...

  5. 树莓派安装mjpg-streamer视频监控 分类: Raspberry Pi 2015-04-12 23:41 144人阅读 评论(0) 收藏

    原来使用Motion在树莓派上跑1280x720分辨率的三颗摄像头.占用内存太严重,关闭诸多功能之后还是不行.故转战mjpg-streamer. 首先安装所需软件 sudo apt-get insta ...

  6. 【从0到1学Web前端】CSS定位问题三(相对定位,绝对定位) 分类: HTML+CSS 2015-05-29 23:01 842人阅读 评论(0) 收藏

    引子: 开始的时候我想先要解决一个问题,怎么设置一个div盒子撑满整个屏幕? 看下面的html代码: <body> <div id="father-body"&g ...

  7. 循环队列 分类: c/c++ 2014-10-10 23:28 605人阅读 评论(0) 收藏

    利用线性表实现队列,为了有效利用空间,将其设计为循环结构,防止假溢出:牺牲一个存储单元以区分队空.队满. 设front队头,rear队尾,N为顺序表大小 队空:rear==front 队满:(rear ...

  8. 链表中用标兵结点简化代码 分类: c/c++ 2014-09-29 23:10 475人阅读 评论(0) 收藏

    标兵结点(头结点)是在链表中的第一个结点,不存放数据,仅仅是个标记 利用标兵结点可以简化代码.下面实现双向链表中的按值删除元素的函数,分别实现 带标兵结点和不带标兵结点两版本,对比可见标兵结点的好处. ...

  9. egrep命令的实现 分类: 编译原理 2014-06-01 23:41 329人阅读 评论(0) 收藏

    本程序实现了egrep命令,首先将正则表达式转换为NFA,并实现模拟NFA的算法. 本程序使用flex实现词法分析,bison实现语法分析 若给定的一行字符串中存在一个字串能被该NFA接受,则输出整行 ...

随机推荐

  1. ubuntu搭建DNS

    ubuntu搭建DNS 一.     bind简介: BIND是Domain Name System (DNS) 协议的一个实现,提供了DNS主要功能的开放实现,主要包括以下三种: *域名服务器 *D ...

  2. Python [Leetcode 141]Linked List Cycle

    题目描述: Given a linked list, determine if it has a cycle in it. 解题思路: 快的指针和慢的指针 代码如下: # Definition for ...

  3. (六)6.16 Neurons Networks linear decoders and its implements

    Sparse AutoEncoder是一个三层结构的网络,分别为输入输出与隐层,前边自编码器的描述可知,神经网络中的神经元都采用相同的激励函数,Linear Decoders 修改了自编码器的定义,对 ...

  4. 锋利的jQuery读书笔记---jQuery中Ajax--load方法

    第一个Ajax例子 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...

  5. Android布局文件夹引起的问题

    Android 运行到setContentView(R.layout.splash); 总是出现如下的错误: java.lang.RuntimeException: Unable to start a ...

  6. textile

    textile 编辑   Textile是一个人性化的Web文本生成器,以简洁的方式提供HTML标签功能. 目录 1内容 ▪ 短语修饰符 ▪ 块修饰符 ▪ 链接 ▪ 属性 ▪ 排列 ▪ 表格 ▪ 图像 ...

  7. centos下安装eclipse-c++

    eclipse-c++ 1)编译器及工具链 yum install gcc gcc-c++ 2)开发工具包(JDK):下载网址:http://www.oracle.com/technetwork/ja ...

  8. ASP.NET MVC之文件上传【二】

    前言 上一节我们讲了简单的上传以及需要注意的地方,查相关资料时,感觉上传里面涉及到的内容还是比较多,于是就将上传这一块分为几节来处理,同时后续也会讲到关于做上传时遗漏的C#应该注意的地方,及时进行查漏 ...

  9. MYSQL性能查看(命中率,慢查询)

    网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...

  10. OSX 10.10安装教程。

    现在苹果已经放出了OS X 10.9 Mavericks第一个开发者预览版,从Mac App Store中获得的安装程序,可以在10.8的系统中直接进行升级,原有文件都会保留.但是要想制作成一个10. ...