计蒜客A1403 Little Boxes

题意:就是给你4个大数让你加起来输出就可以了。
因为数字很大所以肯定不能直接加起来,这是我自己写的代码

#include<iostream>
#include<stdio.h>
#include<string>
#include<cstring>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std; 
ll n;
string s;
int a[100];
stack<int> q;
int main()
{
	int T;
    int maxs;
    cin>>T;
    while(T--) {
        maxs=-1;
        memset(a,0,sizeof(a));
        for(int i=0;i<4;i++) {
            cin>>s;
            int n=s.size();
            for(int i=0;i<n;i++)
            {
                q.push(s[i]-'0');
            }
            for(int i=0;i<n;i++) {
                int temp=q.top();
                q.pop();
                a[i]+=temp;
                if(a[i]>9) {
                    a[i]=a[i]%10;
                    a[i+1]+=1;
                }
            }
        }
        for(int i=99;i>=0;i--)
        {
           if(a[i]!=0)
           {
               maxs=i;
               break;
           }  
        }
        if(maxs<0)
        {
            cout<<0<<endl;
            continue;
        }
        for(int i=maxs;i>=0;i--) {
            cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}

我把数字先用栈储存,方便倒序输出,把每一位的数字加上,如果超过9,对数字求余,在对高一位加一就可以,我看了一下用时和题解差不多。

题解代码

	#include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    const int MAX_N=100000;
    ull a[100];
    int main()
    {
        ios::sync_with_stdio(false);
        int n;
        cin>>n;
        while(n--){
            ull ans=0;
            for(int i=0;i<4;i++){
                cin>>a[i];
                ans+=a[i];
            }
            if(a[1]==4611686018427387904&&a[2]==4611686018427387904&&a[3]==4611686018427387904&&a[0]==4611686018427387904)
                cout<<"18446744073709551616"<<endl;
            else
                cout<<ans<<endl;
        }

        return 0;
    }

个结果很明显,每个数字的数据上限是262次方,四个的话就是264次方
unsigned long long 的数据范围是2^64-1,没有包括最极端的情况,所以需要特判一下,要特别记一下。

发布了12 篇原创文章 · 获赞 0 · 访问量 225

猜你喜欢

转载自blog.csdn.net/weixin_43305294/article/details/104455067
今日推荐