您的位置:首页 > 其它

1023. Have Fun with Numbers (20)

2017-01-28 12:38 363 查看
 Check to see the result if we double it again!

这句废话误导审题了。。。

题目意思就是简单的一次2倍。。。

两个数比较,我就利用sort排好序比较的,因为长度较短,时间复杂度可以忽略。。。当然打两个0~9的表,方法好一点

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<map>
#include<queue>
//#define Array_Len(array) (sizeof(array) / sizeof(array[0]))
using namespace std;
vector<int> orig, temp, output;
bool DoubleArrayLen(vector<int> &a){
int len = 0;
int flag = 0;//进位标识符
for(int i = a.size() - 1; i >= 0; i--){
int tempa = a[i];
a[i] = a[i] * 2 % 10 + flag;
if(tempa * 2 > 9){
flag = 1;
}
else{
flag = 0;
}
}
if(flag == 1){
return false;//长度超出
}
else{
return true;
}
}
bool Equal(vector<int> &a){
sort(a.begin(),a.end());
if(a == orig){
return true;
}
else{
return false;
}
}
int main(){
string s;
cin>>s;
for(int i = 0; i < s.size(); i++){
orig.push_back(s[i]-'0');
}
temp = orig;
sort(orig.begin(),orig.end());
if(!DoubleArrayLen(temp)){
// temp.insert(temp.begin(),1);
printf("No\n1");
for(int i = 0; i < temp.size(); i++){
printf("%d",temp[i]);
}
return 0;
}
output = temp;
if(Equal(temp)){
printf("Yes\n");
}
else{
printf("No\n");
}
for(int i = 0; i < output.size(); i++){
printf("%d",output[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT 大整数运算