题目求助
  • 板块学术版
  • 楼主Chalage_2010
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/10/23 17:42
  • 上次更新2023/10/27 06:16:50
查看原帖
题目求助
760690
Chalage_2010楼主2022/10/23 17:42

题目描述

时间:1s 空间:256M

题目描述:

给定n个整数,求 最大值-最小值

约定:

1<=a<=1010010^{100}

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;
}

请教一下

2022/10/23 17:42
加载中...