题目描述
时间:1s 空间:256M
题目描述:
给定n个整数,求 最大值-最小值
约定:
1<=a<=10100
n<=10
输入格式:
第一行一个整数n
接下来n行,每行一个整数a
输出格式:
一行,一个整数表示结果
样例输入1:
4
121
3321
423
21321
样例输出1:
21200
我的代码
#include<bits/stdc++.h>
using namespace std;
string s,smax,smin;
int n,a[1005],b[1005],ans[1005];
int main()
{
cin>>n;
cin>>s;
smax=smin=s;
for(int i=2;i<=n;i++)
{
cin>>s;
if(s.size()>smax.size()or (s.size()==smax.size())and s>smax)
{
smax=s;
}
if(s.size()<smin.size()or (s.size()==smin.size())and s<smin)
{
smin=s;
}
}
string s1=smax,ss=smin;
int alen=s1.size();
int blen=ss.size();
if(alen<blen or alen==blen and s<ss)
{
cout<<"-";
swap(s,ss);
swap(alen,blen);
}
for(int i=0;i<alen;i++)
{
a[i]=s[alen-1-i]-'0';
}
for(int i=0;i<blen;i++)
{
b[i]=ss[blen-1-i]-'0';
}
for(int i=0;i<alen;i++)
{
ans[i]=a[i]-b[i];
}
for(int i=0;i<alen;i++)
{
if(ans[i]<0)
{
ans[i+1]--;
ans[i]+=10;
}
}
while(ans[alen-1]==0 and alen>1)
{
alen--;
}
for(int i=alen-1;i>=0;i--)
{
cout<<ans[i];
}
return 0;
}
请教一下