【PAT】1023. Have Fun with Numbers

来源:互联网 发布:网络骗多少钱可立案 编辑:程序博客网 时间:2024/06/06 02:17
#define LOCAL#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>using namespace std;typedef long long ll;struct bign{    int d[1010];    int len;    bign(){    memset(d,0,sizeof(d));    len=0;    }};bign change(char str[]){    bign a;    a.len=strlen(str);    for(int i=0;i<a.len;i++){        a.d[i]=str[a.len-i-1]-'0';    }    return a;}bign add(bign a,bign b){    bign c;    int carry=0;    for(int i=0;i<a.len||i<b.len;i++){        int t=a.d[i]+b.d[i]+carry;        c.d[c.len++]=t%10;        carry=t/10;    }    if(carry!=0) c.d[c.len++]=carry;    return c;}bign sub(bign a,bign b){    bign c;    for(int i=0;i<a.len||i<b.len;i++){        if(a.d[i]<b.d[i]){            a.d[i+1]--;            a.d[i]+=10;        }        c.d[c.len++]=a.d[i]-b.d[i];        while(c.len-1>=1&&c.d[c.len-1]==0){            c.len--;        }    }    return c;}bign mul(bign a,int b){    bign c;    int carry=0;    for(int i=0;i<a.len;i++){        int t=a.d[i]*b+carry;        c.d[c.len++]=t%10;        carry=t/10;    }    while(carry!=0){        c.d[c.len++]=carry%10;        carry/=10;    }    return c;}bign div(bign a,int b,int& r){    bign c;    c.len=a.len;    for(int i=a.len-1;i>=0;i--){        r=r*10+a.d[i];        if(r<b) c.d[i]=0;        else{            c.d[i]=r/b;            r=r%b;        }    }    while(c.len-1>=1&&c.d[c.len-1]==0){        c.len--;    }    return c;}void print(bign a){    for(int i=a.len-1;i>=0;i--){        printf("%d",a.d[i]);    }}int main(){    #ifdef LOCAL        freopen("data.in","r",stdin);        freopen("data.out","w",stdout);    #endif // LOCAL    char str[22];    gets(str);    bign a=change(str);    bign b=mul(a,2);    char ans[22];    for(int i=0;i<b.len;i++){        ans[b.len-i-1]=b.d[i]+'0';    }    ans[b.len]='\0';    sort(str,str+a.len);    sort(ans,ans+b.len);        if(strcmp(str,ans)==0) cout<<"Yes"<<endl;    else cout<<"No"<<endl;    print(b);    return 0;}

0 0
原创粉丝点击