1023 Have Fun with Numbers

因为最多有20个字符,int和long long都不行,所以只能用字符串操作。水题~

#include<iostream>
#include<algorithm>
#include<string.h>
#define maxn 25
using namespace std;
typedef long long ll;
char s1[maxn];
int s2[maxn];
int a[10];
int main()
{
    memset(s2,0,sizeof(s2));
    memset(a,0,sizeof(a));
    cin>>s1;
    int len=strlen(s1);
    for(int i=0;i<len;i++)
    {
        a[s1[i]-'0']++;
    }
    int r=0,p=0,tmp;
    for(int i=len-1;i>=0;i--)
    {
        tmp=(s1[i]-'0')*2+r;
        s2[p++]=tmp%10;
        r=tmp/10;
        if(i==0&&r!=0)
            s2[p++]=r;
    }
    for(int i=0;i<p;i++)
    {
        a[s2[i]]--;
    }
    int flag=1;
    for(int i=0;i<=9;i++)
    {
        if(a[i]!=0)
        {
            flag=0;
            break;
        }
    }
    if(flag)
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;
    for(int i=p-1;i>=0;i--)
        cout<<s2[i];
    cout<<endl;
}
View Code

 

posted on 2018-11-27 20:10  FTA_Macro  阅读(67)  评论(0编辑  收藏  举报

导航