string数组排序求救!
查看原帖
string数组排序求救!
469811
JUY_zss楼主2021/9/17 20:43

感觉是sort的问题,总是排序错误 ......

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,y;
string b,c;
struct com{string l,r,z;};
com a[1005];
//!!!
bool cm(com x,com y)
{
	if (x.z.size()!=y.z.size())
	return x.z.size()<y.z.size();
	else
	{
		for (int i=0;i<x.z.size();i++)
		{
			if (x.z[i]<y.z[i])
			return 1;
		}
		return 0;
	}
	//return x.z<y.z;
	
}
string cmm(string x,string y)
{
	int a[5005]={0},b[5005]={0},c[5005]={0},lena=0,lenb=0,lenc=0,x1=0;
	lena=x.size(),lenb=y.size();
	for (int i=0;i<lena;i++)
	a[lena-i]=x[i]-48;
	for (int i=0;i<lenb;i++)
	b[lenb-i]=y[i]-48;
	for (int i=0;i<=lena;i++)
	{
		x1=0;
		for (int j=1;j<=lenb;j++)
		{
			c[i+j-1]=c[i+j-1]+a[i]*b[j]+x1;
			x1=c[i+j-1]/10;
			c[i+j-1]=c[i+j-1]%10;
		}
		c[i+lenb]=x1;
	}
	lenc=lenb+lena;
	while (c[lenc]==0 && lenc>1)
	lenc--;
	string z="";
	for (int i=lenc;i>=1;i--)
	z=z+char(c[i]+48);
	return z;
}
string coo(string x1,string y1)
{
	int a1[5005]={0},c1[5005]={0},lena1=0,x2=0,lenc1=0,b1=0;
    for (int i=0;i<y1.size();i++)
    b1=b1*10+(y1[i]-48);
	lena1=x1.size();
	for (int i=0;i<lena1;i++)
	a1[i+1]=x1[i]-48;
	for (int i=1;i<=lena1;i++)
	{
		c1[i]=(x2*10+a1[i])/b1;
		x2=(x2*10+a1[i])%b1;
	}
	lenc1=1;
	while (c[lenc1]==0 && lenc1<lena1)
	lenc1++;
	string z1="";
	for (int i=lenc1;i<=lena1;i++)
	z1=z1+char(c1[i]+48);
	return z1;
}
int main()
{
	cin>>n>>b>>y;
	for (int i=1;i<=n;i++)
	{
		cin>>a[i].l>>a[i].r;
		a[i].z=cmm(a[i].l,a[i].r);
	}
	//!!!
	sort(a+1,a+n+1,cm);
	/*for (int i=1;i<=n;i++)
	{
		cout<<a[i].l<<" "<<a[i].r<<endl;;
	}*/
	for (int i=1;i<=n;i++)
	{
		c=coo(b,a[i].r);
		b=cmm(b,a[i].l);
	}
	cout<<c;
	return 0;
}
2021/9/17 20:43
加载中...