• pat00-自测4. Have Fun with Numbers (20)


    00-自测4. Have Fun with Numbers (20)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    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 #include <cstdio>
     2 #include <cstring>
     3 #include <string>
     4 #include <queue>
     5 #include <cmath>
     6 #include <iostream>
     7 using namespace std;
     8 int ti[10],num1[25],num2[25];
     9 char num[25];
    10 int main(){
    11     //freopen("D:\INPUT.txt","r",stdin);
    12     scanf("%s",num);
    13 
    14     //cout<<num<<endl;
    15 
    16     int i;
    17     for(i=0;i<strlen(num);i++){
    18         num1[i]=num[i]-'0';
    19         ti[num1[i]]++;
    20         num2[i]=2*num1[i];
    21     }
    22     int k=0,t;
    23     for(i=strlen(num)-1;i>=0;i--){
    24         t=num2[i]+k;
    25         num2[i]=t%10;
    26         ti[num2[i]]--;
    27         k=t/10;
    28     }
    29     bool can=false;
    30     if(!k){
    31         for(i=0;i<=9;i++){
    32             if(ti[i]){
    33                 break;
    34             }
    35         }
    36         if(i==10){
    37             can=true;
    38         }
    39     }
    40     if(can){
    41         printf("Yes
    ");
    42     }
    43     else{
    44         printf("No
    ");
    45     }
    46     if(k){
    47         printf("%d",k);
    48     }
    49     for(i=0;i<strlen(num);i++){
    50         printf("%d",num2[i]);
    51     }
    52     printf("
    ");
    53     return 0;
    54 }
  • 相关阅读:
    Spring Boot+Vue前后端分离(1):准备环境 +项目启动
    Git使用SSH协议clone项目及SSH简介
    Intelij ideas windows版本快捷键整理
    Spring Boot配置—— yml 配置map
    Nginx配置——多站点配置
    String分割
    Spring日志处理——logger占位符
    Java缓存经验
    maven项目——maven跳过单元测试maven.test.skip和skipTests的区别
    Java工具类——Hutool Java
  • 原文地址:https://www.cnblogs.com/Deribs4/p/4716690.html
Copyright © 2020-2023  润新知