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;
}
这句废话误导审题了。。。
题目意思就是简单的一次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;
}
相关文章推荐
- libdvbpsi源码分析(四)PAT表解析/重建
- PAT配置
- 什么是端口复用动态地址转换(PAT) 介绍配置实例
- MikroTik layer7-protocol
- PAT是如何工作的
- PAT 乙级题:1002. 写出这个数 (20)
- PAT (Advanced Level) Practise 1001-1010
- PAT (Basic Level) Practise (中文)
- 数据结构学习与实验指导(一)
- PAT Basic Level 1001-1010解题报告
- PAT 数素数
- PAT 福尔摩斯的约会
- PAT 德才论
- PAT 月饼
- 1001. 害死人不偿命的(3n+1)猜想
- 1002. 写出这个数
- 1032. 挖掘机技术哪家强
- 1001. 害死人不偿命的(3n+1)猜想 (PAT basic)
- 1002. 写出这个数(PAT Basic)
- 1004. 成绩排名(PAT Basic)