您的位置:首页 > 编程语言 > C语言/C++

EASY_ZJU_PAT_ADVANCED LEVEL_1023 大数乘法

2014-02-24 18:44 393 查看

1023. Have Fun with Numbers (20)

时间限制400 ms内存限制32000 kB代码长度限制16000 B判题程序Standard作者CHEN, YueNotice 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 differentpermutation. 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
/************************************************@ AUTHOR	: GAOMINQUAN@ DATA		: 2014 - 2 - 24@ MAIL		: ENSOLEILLY@GMAI.COM@ HARD		: EASY **/************************************************/#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;vector<int> reverse_vector(vector<int> perVec){int length = perVec.size() - 1;for(int i = 0; i<=length/2; i++){  //NOTICE IT'S LIKE THE PRIMER CACULATE, < AND <=swap(perVec[i],perVec[length-i]);}return perVec;}vector<int> change_to_bits(string inputNum){vector<int> bits;for(int stringI = 0; stringI < inputNum.size(); stringI++){int tempBits = inputNum[stringI] - '0';bits.push_back(tempBits);}return bits;}vector<int> mutiply(vector<int> numbers){bool addBit = false;vector<int> doubleNum;for(int i = numbers.size() - 1; i>=0; i--){int tempDouble = numbers[i] * 2 + addBit;if(tempDouble>9){tempDouble -= 10;addBit = true;}else{addBit = false;}doubleNum.push_back(tempDouble);}if(addBit){doubleNum.push_back(addBit);  //NOTICE HERE !!!!!}return doubleNum;}bool checkSame(vector<int> v1,veca782tor<int> v2){sort(v1.begin(),v1.end());sort(v2.begin(),v2.end());bool same = (v1.size() == v2.size());if(v1.size() == v2.size()){for(int i = 0; i<v1.size(); i++){if(v1[i] != v2[i]){same = false;break;}}}return same;}int main(){string input = "123456789";cin>>input;string outputs[] = {"No","Yes"};vector<int> bits = change_to_bits(input);//	vector<int> doubleBits = mutiply(bits);vector<int> doubleBits = reverse_vector(mutiply(bits));cout<<outputs[checkSame(bits,doubleBits)]<<endl;for(int i = 0; i<doubleBits.size(); i++){cout<<doubleBits[i];}cout<<endl;return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ OJ ZJU PAT