javaee论坛

普通会员

225648

帖子

335

回复

349

积分

楼主
发表于 2019-11-03 09:06:32 | 查看: 116 | 回复: 2

Noticethatthenumber123456789isa9-digitnumberconsistingexactlythenumbersfrom1to9,withnoduplication.Doubleitwewillobtain246913578,whichhappenstobeanother9-digitnumberconsistingexactlythenumbersfrom1to9,onlyinadifferentpermutation.Checktoseetheresultifwedoubleitagain!

Nowyouaresupposetocheckiftherearemorenumberswiththisproperty.Thatis,doubleagivennumberwith k digits,youaretotelliftheresultingnumberconsistsofonlyapermutationofthedigitsintheoriginalnumber.

InputSpecification:

Eachinputcontainsonetestcase.Eachcasecontainsonepositiveintegerwithnomorethan20digits.

OutputSpecification:

Foreachtestcase,firstprintinaline"Yes"ifdoublingtheinputnumbergivesanumberthatconsistsofonlyapermutationofthedigitsintheoriginalnumber,or"No"ifnot.Theninthenextline,printthedoublednumber.

SampleInput:1234567899SampleOutput:Yes2469135798#include<iostream>#include<string>#include<sstream>#include<vector>#include<algorithm>#include<cmath>usingnamespacestd;//9:38intmain(){//freopen("C:\\Users\\chenzhuo\\Desktop\\in.txt","r",stdin);vector<int>tmp(10,0);vector<int>tmp1(10,0);stringstr1;cin>>str1;for(inti=0;i<str1.size();i++){tmp[str1[i]-'0']++;}intjin=0;stringstr2="";for(inti=str1.size()-1;i>=0;i--){intk=2*(str1[i]-'0')+jin;jin=0;if(k>=10){k-=10;jin=1;}charc=k+'0';str2=c+str2;}if(jin==1){str2='1'+str2;}for(inti=0;i<str2.size();i++){tmp[str2[i]-'0']--;}if(tmp==tmp1)cout<<"Yes"<<endl;elsecout<<"No"<<endl;for(inti=0;i<str2.size();i++){cout<<str2[i];}}

 


普通会员

0

帖子

298

回复

303

积分
沙发
发表于 2022-12-24 23:34:19

记录一下

普通会员

0

帖子

289

回复

299

积分
板凳
发表于 2024-03-28 04:12:29

如果这就是爱,再转身的时候就该留下

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017