题目描述
小K和小A在玩一个勇士决斗的游戏,每位勇士都有一个整数作为战斗力,两人会分别选择一位勇士进行决斗,但这个决斗有着如下的特殊规则:
1、准备阶段
位数较少的战斗力数字前面不断添加前导0使得与另一战斗力数字位数相等
2、决斗阶段
从两个战斗力数字的最低位开始,依次比较对应位上数的大小,较小数则决斗失败,那么该勇士需要删除决斗失败的某位上的数字(如果某位上数相等则为平局不进行任何操作),重复这个过程直到最高位也决斗后结束。
3、展示阶段
将未被删除的数按顺序依次拼接,得到新的战斗力数字,并且展示两位勇士新的战斗力,如果某个战斗力数字在决斗后位数被删空,则展示“Fail”。
例如:两个战斗力分别为4526和65,其决斗过程如下,最后得到456和6 输入描述
输入一行,包含2个整数K和A,表示小K和小A的勇士战斗力数字。
输出描述
输出共两行;
第一行,如果K的位数被删空,输出“Fail”,否则输出决斗后的新战斗力;
第二行,如果A的位数被删空,输出“Fail”,否则输出决斗后的新战斗力。
样例1
输入
4526 65
输出
456
6
样例2
输入
1234 4567
输出
Fail
4567
样例3
输入
800 400
输出
800
0
提示
对于30%的数据,保证K和A由三位数构成; 对于100%的数据,1<=K,A<=10^9。
我的代码
只要输出Fail就什么都输出不了
#include<bits/stdc++.h>
using namespace std;
int a,b;
string k1,k2="",ans1,a1,a2="",ans2;
bool flag=false;
int main()
{
cin>>a>>b;
k1=to_string(a);
a1=to_string(b);
int lenk=k1.length(),lena=a1.length();
if(lenk<lena)
{
for(int i=1;i<=lena-lenk;i++)
{
k1='0'+k1;
}
lenk=lena;
}
else
{
for(int i=1;i<=lenk-lena;i++)
{
a1='0'+a1;
}
lena=lenk;
}
for(int i=0;i<lena;i++)
{
if(k1[i]-'0'==a1[i]-'0')
{
k2+=k1[i];
a2+=a1[i];
}
else if(k1[i]-'0'<a1[i]-'0')
{
a2+=a1[i];
}
else
{
k2+=k1[i];
}
}
int flag=true;
for(int i=0;i<=k2.length()-1;i++)
{
if(k2[i]=='0' && i!=k2.length()-1 && flag==true)continue;
else
{
ans1+=k2[i];
flag=false;
}
}
flag=true;
for(int i=0;i<=a2.length()-1;i++)
{
if(a2[i]=='0' && i!=a2.length()-1 && flag==true)continue;
else
{
ans2+=a2[i];
flag=false;
}
}
if(k2.size()==0)
{
cout<<"Fail";
}
else
{
cout<<ans1;
}
cout<<endl;
if(a2.size()==0)
{
cout<<"Fail"<<endl;
}
else
{
cout<<ans2<<endl;
}
}