加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

EASY_ZJU_PAT_ADVANCED LEVEL_1023 大数乘法

发布时间:2020-12-14 03:43:09 所属栏目:大数据 来源:网络整理
导读:1023. Have Fun with Numbers (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 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. Do

1023. Have Fun with Numbers (20)

时间限制
400 ms
内存限制
32000 kB
代码长度限制
16000 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
 
 
/************************************************
@ 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,vector<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;
}




(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读