1023 Have Fun with Numbers

古城微笑少年丶 2024-04-08 09:53 178阅读 0赞

1023 Have Fun with Numbers

0、题目

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 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:

  1. 1234567899

Sample Output:

  1. Yes
  2. 2469135798

1、大致题意

给出一个长度不超过20的整数,问这个整数两倍后的数位是否为原数位的一个排列。不管是yes还是no最后都要输出整数乘以2的结果

2、基本思路

简单题

3、AC代码

  1. #include <cstdio>
  2. #include <string.h>
  3. using namespace std;
  4. int book[10];
  5. int main() {
  6. char num[22];
  7. scanf("%s", num);
  8. int flag = 0, len = strlen(num);
  9. for(int i = len - 1; i >= 0; i--) {
  10. int temp = num[i] - '0';
  11. book[temp]++;
  12. temp = temp * 2 + flag;
  13. flag = 0;
  14. if(temp >= 10) {
  15. temp = temp - 10;
  16. flag = 1;
  17. }
  18. num[i] = (temp + '0');
  19. book[temp]--;
  20. }
  21. int flag1 = 0;
  22. for(int i = 0; i < 10; i++) {
  23. if(book[i] != 0)
  24. flag1 = 1;
  25. }
  26. printf("%s", (flag == 1 || flag1 == 1) ? "No\n" : "Yes\n");
  27. if(flag == 1) printf("1");
  28. printf("%s", num);
  29. return 0;
  30. }

发表评论

表情:
评论列表 (有 0 条评论,178人围观)

还没有评论,来说两句吧...

相关阅读