题解 | 大数加法

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 计算两个数之和
 * @param s string字符串 表示第一个整数
 * @param t string字符串 表示第二个整数
 * @return string字符串
 */
#include <string.h>
char value[100001] = {0};
char* solve(char* s, char* t )
{
    char* send=s;
    char* tend=t;
    int n=100000;
    int len=strlen(s)>strlen(t)?strlen(s):strlen(t);    //得到长的那一条字符串的长度
    for(n=100001-strlen(s);n<100001;n++)                //把字符串s各位加到数组中
        value[n]+=(*send++-'0');                   
    for(n=100001-strlen(t);n<100001;n++)                //把字符串t各位加到数组中
        value[n]+=(*tend++-'0'); 
    for(n=100000;n>100000-len;n--)                      //把数组中的数值转化为ASCII码,并判断是否需要进位
    {
        value[n]+=48;
        if(value[n]>57)
        {
            value[n]-=10;
            value[n-1]++;
        }
    }
    if(value[100000-len]>0)                             //判断两个字符串相加后是否向最高位进位
    {
        value[100000-len]+=48;
        return value+100000-len;
    }   
    return value+100001-len;    
}

全部评论

相关推荐

qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务