[PTA]Have fun with numbers

一开始写这道题的时候忘记了最高位进位导致乘2后的数字位数增加一位的情况。

#include<stdio.h>
#include<string.h>
#define Max_size 21
int main(void)
{
    char str[Max_size];
    int double_str[Max_size];
    long a=0;
    int flag=0;
    gets(str);
    int n=strlen(str);
    int double_n=n;
    int mark=1;
    for(int i=n-1;i>=0;i--)
    {
        int temp=str[i]-'0';
        if((temp*2-10)>=0)
        {
            double_str[i]=temp*2-10+flag;
            flag=1;
        }
        else
        {
            double_str[i]=temp*2+flag;
            flag=0;
        }
        if(i==0&&flag==1)
           {
               for(int j=n;j>=1;j--)
               double_str[j+1]=double_str[j];
               double_str[0]=1;
               double_n++;
               mark=0;
           }
    }
    //判断字符串中相同字符的个数是否相等,我想到了哈希映射
    int judge[10]={0};
    for(int i=0;i<n;i++)
            ++judge[str[i]-'0'];
    if(double_n==n)
    {
         for(int i=0;i<n;i++)
       {
           if(--judge[double_str[i]]<0)
            {
                mark=0;
                break;
            }
       }
    }
       if(mark==0) printf("No\n");
       else printf("Yes\n");
    for(int i=0;i<double_n;i++)
        printf("%d",double_str[i]);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/CuteyThyme/p/10625019.html