浙大 PAT Advanced level 1023. Have Fun with Numbers (20)
来源:互联网 发布:复杂的网络拓扑 编辑:程序博客网 时间:2024/06/06 17:22
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
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
输入的数字最大可以有20位,因此需要用string类型来记录输入,并要自己完成乘法运算。
需要考虑double后的结果是否和输入位数相同,以及结果和输入的数字组成是否相同。
// 全部accept#include <iostream>using namespace std;#define MAXLENGTH 23int input[MAXLENGTH];int output[MAXLENGTH];int judge[10];int main(){ char buffer[MAXLENGTH]; int length = 0; int carry = 0; // 乘法进位 bool flag = true; cin.getline(buffer, MAXLENGTH); while ('\0' != buffer[length]) { ++length; } for (int i = MAXLENGTH-1, j = length-1; j != -1; --i, --j) { input[i] = buffer[j] - '0'; } for (int i = MAXLENGTH-1; i != -1; --i) { output[i] = (input[i]*2+carry)%10; carry = (input[i]*2+carry)/10; } for (int i = MAXLENGTH-1; i != MAXLENGTH-length-1; --i) { ++judge[input[i]]; --judge[output[i]]; } for (int i = 0; i != 10; ++i) { if (0 != judge[i]) { flag = false; break; } } if (flag) { cout << "Yes" << endl; } else { cout << "No" << endl; } flag = false; for (int i = 0; i != MAXLENGTH; ++i) { if (0 != output[i]) { flag = true; } if (flag) { cout << output[i]; } } cout << endl; system("pause"); return 0;}// 有一个case不过#if 0#include <iostream>using namespace std;#define MAXLENGTH 23int input[MAXLENGTH];int output[MAXLENGTH];int judge[10];int main(){char buffer[MAXLENGTH];int length = 0;int carry = 0;// 乘法进位bool flag = true;cin.getline(buffer, MAXLENGTH);while ('\0' != buffer[length]){++length;}for (int i = MAXLENGTH-1, j = length-1; j != -1; --i, --j){input[i] = buffer[j] - '0';}for (int i = MAXLENGTH-1; i != -1; --i){output[i] = (input[i]*2+carry)%10;carry = (input[i]*2+carry)/10;}for (int i = MAXLENGTH-1; i != -1; --i){++judge[input[i]];--judge[output[i]];}for (int i = 1; i != 10; ++i){if (0 != judge[i]){flag = false;break;}}if (flag){cout << "Yes" << endl;}else{cout << "No" << endl;}flag = false;for (int i = 0; i != MAXLENGTH; ++i){if (0 != output[i]){flag = true;}if (flag){cout << output[i];}}cout << endl;system("pause");return 0;}#endif
0 0
- 浙大 PAT Advanced level 1023. Have Fun with Numbers (20)
- 1023. Have Fun with Numbers (20) @ PAT (Advanced Level) Practise
- 【PAT Advanced Level】1023. Have Fun with Numbers (20)
- 【c++】PAT (Advanced Level)1023. Have Fun with Numbers (20)
- 【PAT (Advanced Level)】1023. Have Fun with Numbers (20)
- PAT (Advanced Level) Practise 1023. Have Fun with Numbers (20)
- 【PAT】【Advanced Level】1023. Have Fun with Numbers (20)
- [PAT (Advanced Level) ]1023. Have Fun with Numbers 解题文档
- PAT (Advanced Level) Practise 1023 Have Fun with Numbers (20)
- PAT (Advanced Level) Practise 1023 Have Fun with Numbers (20)
- PAT (Advanced Level) 1023. Have Fun with Numbers (20) 字符串翻倍,哈希
- 1023. Have Fun with Numbers (20)【字符串操作】——PAT (Advanced Level) Practise
- Pat(Advanced Level)Practice--1023(Have Fun with Numbers)
- 浙大PAT 1023题 1023. Have Fun with Numbers
- 【PAT】1023. Have Fun with Numbers (20)
- PAT: 1023. Have Fun with Numbers (20)
- PAT 1023. Have Fun with Numbers (20)
- PAT 1023. Have Fun with Numbers (20)
- 2016年武汉科技大学邀请赛网络赛 D题
- Magento中打印SQL语句来调试
- Caffe源码解读3--layer.hpp
- 关于Volley中JsonObjectRequest使用Post设置参数的问题
- spring boot获取注入的实例bean
- 浙大 PAT Advanced level 1023. Have Fun with Numbers (20)
- 【Android】联想到onNewIntent()在手机QQ上的用法
- Android中的文件存储和sharedpreference
- android开发一些好用的小知识
- Java一经问世,即以其面向用户
- java 后台开发中model与entity(实体类)的区别
- 【Android学习札记】Android Studio 安装配置
- win下cygwin openwrt编译测试 (应该行得通,但是我找不出来working g++ failed原因。)
- Java已经开始影响这一代程序员