站长网 大数据 HDU 1047(大数相加)(数组模拟)

HDU 1047(大数相加)(数组模拟)

? 这个题目啊,其实扎实的做的话应该并不难,然而我想看是统一用字符串,还是再转化成数组,然后看了别人的题解,傻冒一样的像别人一样谢了getchar();真是傻冒了,我用的scanf(“%s”,str),跟它有个什么关系,难道是这几天有点急功近利,所以才着急看别

? 这个题目啊,其实扎实的做的话应该并不难,然而我想看是统一用字符串,还是再转化成数组,然后看了别人的题解,傻冒一样的像别人一样谢了getchar();真是傻冒了,我用的scanf(“%s”,str),跟它有个什么关系,难道是这几天有点急功近利,所以才着急看别人的思路,淡定啊,自己的才是最好的!!

? 只需要用一个数组,将每次输入的字符串转化并加上就行了!(最后输出格式也要注意下)

代码如下:

//HDU 1047 数组模拟大数
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int n,i,j;
    cin>>n;
    while(n--)
    {
        char str[110];
        int sum[110]={0};//如果放到开头定义,别忘了memset();
        while(~scanf("%s",str)&&str[0]!='0')
        {
            for(i=strlen(str)-1,j=0;i>=0;i--,j++)
            {
                sum[j]+=str[i]-48;//转化成数字并加到数组上
                if(sum[j]>9)//大于9进位
                {
                    sum[j]-=10;
                    sum[j+1]+=1;
                }
            }
        }
        for(i=105;i>=0;i--)
            if(sum[i])//找到首位数字
                break;

        for(j=i;j>=0;j--)
            cout<<sum[j];
        if(i<0)
            cout<<0;
        cout<<endl;
    if(n)
        cout<<endl;
    }
    return 0;
}

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/shuju/2021/0526/6837.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部