2013 Multi-University Training Contest 1 I-number

水题,注意不要去掉前导0……

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<string>
#include<vector>
#define ll __int64
#define pi acos(-1.0)
using namespace std;
char
an[100005];
int
m;
int
fun()
{

    int
sum=0,i;
    for
(i=0;i<m;i++)
        sum+=an[i]-'0';
    return
sum;
}

void
inverse()
{

    int
i,j;
    for
(i=0;i<m/2;i++)
        swap(an[i],an[m-i-1]);
}

void
add()
{

    int
i,j,t=0;
    an[0]=(an[0]+1);
    t=(an[0]-'0')/10;
    an[0]=(an[0]-'0')%10+'0';
    for
(i=1;i<m;i++)
    {

        if
(t==0) break;
        an[i]+=t;
        if
(an[i]-'0'>9)
        {

            t=(an[i]-'0')/10;
            an[i]=(an[i]-'0')%10+'0';
        }

        else
t=0;
    }

    if
(t!=0)
        an[m++]=t+'0';
}

int
main()
{

    int
i,t;
    cin>>t;
    while
(t--)
    {

        cin>>an;
        m=strlen(an);
        inverse();
        while
(1)
        {

            add();
            if
(fun()%10==0)
                break
;
        }

        for
(i=m-1;i>=0;i--)
            cout<<an[i];
        cout<<endl;
    }

    return
0;
}

原文地址:https://www.cnblogs.com/xin-hua/p/3211735.html