PAT (Advanced Level) 1023. Have Fun with Numbers (20) 字符串翻倍,哈希
来源:互联网 发布:php在北京好找工作吗 编辑:程序博客网 时间:2024/06/06 20:52
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:1234567899Sample Output:
Yes2469135798
字符串处理。使用一个数组a[10]作哈希表判断是否匹配。
/*2015.7.22cyq*/#include <iostream>#include <vector>#include <string>using namespace std;string doubleString(const string &s1){string s2(s1);int carry=0;int tmp;for(auto it=s2.rbegin();it!=s2.rend();it++){tmp=(*it-'0')*2+carry;carry=tmp/10;*it=tmp%10+'0';}if(carry>0)s2.insert(s2.begin(),1,carry+'0');return s2;}int main(){string s1;cin>>s1;string s2=doubleString(s1);vector<int> a(10,0);int n1=s1.size();int n2=s2.size();if(n2>n1)cout<<"No"<<endl;else{bool match=true;for(int i=0;i<n1;i++){a[s1[i]-'0']++;}for(int i=0;i<n2;i++){if(--a[s2[i]-'0']<0){match=false;break;}}if(match)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}cout<<s2<<endl;return 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 (20)
- 1023. Have Fun with Numbers (20)【字符串操作】——PAT (Advanced Level) Practise
- [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)Practice--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)
- PAT 1023. Have Fun with Numbers (20)
- RTP打包传输MJPEG码流
- JAVA矩阵包JAMA学习
- Day04笔记
- Android APP崩溃上传日志到服务器并且重启!
- Android官方技术文档翻译——Gradle 插件用户指南(6)
- PAT (Advanced Level) 1023. Have Fun with Numbers (20) 字符串翻倍,哈希
- Linux Kconfig及Makefile学习
- hd1234
- Android的NDK开发(6)——如何定位Android NDK开发中遇到的错误
- IOS - 修改头像
- [ASP.NET MVC 小牛之路]07 - URL Routing
- SVN Commit Failed Transaction is out of date问题
- 15-7-22 Oj-更换火车头
- C#基础回顾:正则表达式