PAT甲级 1023

来源:互联网 发布:假火车票制作软件 编辑:程序博客网 时间:2024/05/20 08:25

Have Fun with Numbers

Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a different permutation. Check to see the result if we double it again!

Now you are suppose to check if there are more numbers with this property. That is, double a given number with k digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.

Input Specification:

Each input file contains one test case. Each case contains one positive integer with no more than 20 digits.

Output Specification:

For each test case, first print in a line “Yes” if doubling the input number gives a number that consists of only a permutation of the digits in the original number, or “No” if not. Then in the next line, print the doubled number.

Sample Input:
1234567899
Sample Output:
Yes
2469135798


  1. 考点

    1. 基本的数据处理
  2. 题解

    1. 由于unsigned long long int 最大20位,所以不能直接使用int型,利用char数组存取。
    2. 2个reverse使char数组翻转成方便处理和输出的样式。
  3. 笔记

    1. printf unsigned long long int用%llu
    2. strlen的头文件是string.h
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;const int maxn=20+2;char in[maxn];int first[10],second[10];void parse(int num[]){    int i=0;    while(in[i]!='\0'){        ++num[in[i]-'0'];        ++i;    }}bool cmp(){    for(int i=0;i<10;i++){        if(first[i]!=second[i])return false;    }    return true;}int main(){    scanf("%s",in);    parse(first);    reverse(in,in+strlen(in));    int i;    int add=0;    for(i=0;i<strlen(in);i++){        add+=(in[i]-'0')*2;        in[i]=add%10+'0';        add/=10;    }    if(add!=0){        in[i]=add+'0';        in[i+1]='\0';    }    parse(second);    reverse(in,in+strlen(in));    if(cmp()){        printf("Yes\n");    }else{        printf("No\n");    }    printf("%s",in);}
原创粉丝点击