大数求和 正整数

啥子都不说,直接上代码

#include<stdio.h>
#include<string.h>
int MAX(int a,int b)
{
    if(a>b)
        return a;
    return b;
}
void turn(char *p,char *q)
{
    char t=*p;
    *p=*q;
    *q=t;
}
void change(char a[],int n)
{
    int head=0,tail=n;
    while(head<tail){
        turn(a+head,a+tail);
        tail--;
        head++;
    }
}
int main()
{
    char digit1[1010],digit2[1010],digit3[1010];
    while(scanf("%s%s",digit1,digit2)!=EOF){
    memset(digit1+strlen(digit1)+1,‘0‘,sizeof(digit1)-strlen(digit1));
    memset(digit2+strlen(digit2)+1,‘0‘,sizeof(digit2)-strlen(digit2));
    memset(digit3,‘0‘,sizeof(digit3));
    int i,len1,len2,len3;
    len1=1000;
    while(digit1[len1]==‘0‘&&len1>1){
        len1--;
    }
    change(digit1,len1);
    len2=1000;
    while(digit2[len2]==‘0‘&&len2>1)
        len2--;
    change(digit2,len2);
    for(i=0;i<=MAX(len1,len2);i++)
    {
        digit3[i]=digit3[i]+digit1[i]+digit2[i]-‘0‘-‘0‘;
        if(digit3[i]>=‘0‘+10){
            digit3[i+1]++;
            digit3[i]-=10;
        }
    }
    len3=1001;
    while(digit3[len3]==‘0‘&&len3>1)
        len3--;
    //printf("%d\n",len3);
    for(i=len3;i>0;i--)
        printf("%c",digit3[i]);
    printf("\n");
    }
    return 0;
}
时间: 2024-10-26 10:30:37

大数求和 正整数的相关文章

[华为机试练习题]2.大数求和

题目二[大数求和] 描述: 给定两个非常大的正整数A和B,位数在50至100之间.求C=A+B: 题目类别: 字符串 难度: 中级 运行时间限制: 10Sec 内存限制: 128MByte 阶段: 入职前练习 输入: 因为A和B很大,从高位到低位,以字符串的形式输入两行数字A和B.A和B的位数在50至100之间. 输出: 以字符串形式,输出一行,表示A和B的和. 样例输入: 11111111111111111111111111111111111111111111111111 2222222222

算法基础:大数求和问题

大数求和: 给定两个非常大的正整数A和B,位数在50至100之间.求C=A+B: 输入: 因为A和B很大,从高位到低位,以字符串的形式输入两行数字A和B.A和B的位数在50至100之间. 输出: 以字符串形式,输出一行,表示A和B的和. 样例输入: 11111111111111111111111111111111111 22222222222222222222222222222222222 样例输出: 33333333333333333333333333333333333 代码实现: packa

大数求和

#include <iostream> #include <string> #include <vector> using namespace std; int main() { string A, B; cin>>A>>B; vector<int> vecSum; int lenA = A.length(); int lenB = B.length(); int temp; int carry =0; int indexA = le

timus 1547. Password Search【题意思路+大数模板】

题目地址传送门:URAL 1547 这道题需要用到大数的很多模板,推荐大家去刷刷! 题目大意:Vova忘记了在Timus OJ上面的密码了,密码是由小写字母(a~z)组成的,他只知道密码长度不大于n位,现在他需要用m台数据处理器对密码进行检索,其中检索顺序需要满足字典序.比如他的密码长度不大于2,那就需要依次检索a,b,..........,y,z,aa,ab,..........,zy,zz.输出每台数据检索器的检索区间,使得总的检索效率可以达到最高. 已知密码的总可能数不少于数据处理器个数.

C语言超大数相加求和、加减乘除算法实现

#include <stdio.h> #include <stdbool.h> #include <string.h> #include <stdlib.h> #define MAXLEN 20 int arr1[MAXLEN]; int arr2[MAXLEN]; char str1[MAXLEN]; char str2[MAXLEN]; void convertBin(int intNum) {    static int bitSize = 32;  

面经 收藏的 这可能不只是一篇面经

作者:_XiaoTeng_链接:https://www.nowcoder.com/discuss/29890来源:牛客网 写了个显眼的标题,就真得说几句有用的话. 5月份一个很偶然的机会,加了叶神的微信,还收到了祝福.一激动就承诺说写篇最详细的面经分享给大家,毕竟用了这么久的牛客网,收获真的很大. 校招真的是段劳心伤神的经历,我把这一路的体会,写在秋招前,也许能给那些和我一样迷茫过,怀疑过,失落过的人一些帮助. (这篇文章有点长,可能需要点耐心) 0. 写在之前 首先呢我的面试经历和一些面霸和收

编程小练习 OJ题 06

一元多项式化简 对输入的一元多项式,进行同类项合并,并按指数降序排序,输出处理后的一元多项式.如输入: "7X^4-5X^6+3X^3",输出: "-5X^6+7X^4+3X^3". #include <map> #include <string> #include <stdlib.h> #include <iostream> using namespace std; void OrderPolynomial (cha

题目1198:a+b-----没有AC掉,,,,,借鉴了别人的一份

WA:在屏幕上可以出现正确的结果,不知为何不能AC #include<stdio.h> #include<stdlib.h> #include<cstring> int main() { char str1[1001],str2[1001]; while(scanf("%s %s",str1,str2)!=EOF) { int a[1001],a1=0,b[1001],b1=0,c[1001],c1=0; int i,j; for (i=0;str1

Java进阶之欧拉工程 第十五篇【2的1000次方各位之和为多少】

题目如下: 215 = 32768 并且其各位之和为 is 3 + 2 + 7 + 6 + 8 = 26. 21000 的各位数之和是多少? 原题如下: 215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26. What is the sum of the digits of the number 21000? 解题思路:这道题和之前的大数求和的思想有点类似,就是用数组存储大数的每一位数,然后相加,上次写的大数相加的函数稍作