2018年省赛热身赛第3场——C Total AmountTotal Amount(补题)

题目链接:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int temp[20],ans[20];
int main()
{
    string input,output;
    int n,k,count,i,j,len;
    while(cin>>n&&n!=0)
    {
        output="";
        memset(ans,0,sizeof(ans));
        for(i=0;i<n;i++)
        {
            cin>>input;
             memset(temp,0,sizeof(temp));
             len=input.length();
             count=0;
             for(j=0;j<len;j++)
             {
                 if(isdigit(input[len-1-j]))
                 {
                     temp[count]=input[len-1-j]-'0';
                     count++;
                 }
             }
             for(j=0;j<20;j++)
             {
                 ans[j]=temp[j]+ans[j];//大数相加的做法,可以记住
                 ans[j+1]+=ans[j]/10;
                 ans[j]=ans[j]%10;
             }
        }
        int j;
        for(j=0;j<20;j++)
        {
            if(ans[20-1-j]!=0)
                break;
        }
        k=20-1-j;
        k=k>=count-1?k:count-1;//前导0的情况
        for(j=0,i=1;j<=k;j++,i++)
        {
            output+=ans[j]+'0';
            if(j==1)
            {
                output+=".";
                i=0;
            }
            if(i%3==0&&i!=0&&i!=k-1)
            {
                output+=",";
            }
        }
        output+="$";
        reverse(output.begin(),output.end());
        cout<<output<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42232118/article/details/81776739