蒟蒻求助 #1本地输出正确,但测评时输出错误
查看原帖
蒟蒻求助 #1本地输出正确,但测评时输出错误
530679
o7u7o楼主2023/12/19 15:38
#include <bits/stdc++.h>
using namespace std;
int n;
string x,y;
string ans;
struct node{
	string a1;
	int a,b;
}a[10005];
int compare(string str1,string str2)//比较字符串大小 
{
    if(str1.length()>str2.length()) return 1;
    else if(str1.length()<str2.length())  return -1;
    else return str1.compare(str2);
}
string mul(string a,string b){//高精乘 
	int n1[10005],n2[10005],ret[10005];
	memset(n1,0,sizeof(n1));
	memset(n2,0,sizeof(n2));
	memset(ret,0,sizeof(ret));
	int len1=a.size();
	int len2=b.size();
    for(int i=1;i<=len1;i++) n1[i]=a[len1-i]-'0';
    for(int i=1;i<=len2;i++) n2[i]=b[len2-i]-'0';
	for(int i=1;i<=len2;i++)
		for(int j=1;j<=len1;j++)
			ret[i+j-1]+=n1[j]*n2[i];
	for(int i=1;i<len1+len2;i++)
		if(ret[i]>9){
			ret[i+1]+=ret[i]/10;
			ret[i]%=10;
		}
	int len=len1+len2;
    while(ret[len]==0 && len>1)len--;
    string rt;//转字符串 
    for(int i=len;i>=1;i--) rt=rt+char(ret[i]+'0');
    return rt;
}
string div(string a,int b){//高精除低精 
	int num[10005],ret[10005],cr=0;
	memset(num,0,sizeof(num));
	memset(ret,0,sizeof(ret));
	int len=a.size(),len_ret;
    for(int i=1;i<=len;i++) num[i]=a[i-1]-'0';
    for(int i=1;i<=len;i++){
        ret[i]=(cr*10+num[i])/b;
        cr=(cr*10+num[i])%b; 
    }
    len_ret=1;
    while(ret[len_ret]==0 && len_ret<len) len_ret++;
	string rt;//转字符串 
    for(int i=len_ret;i<=len;i++) rt=rt+char(ret[i]+'0');
    return rt;
}
bool cmp(node a,node b){
	return a.a*a.b<b.a*b.b;
}
string chan(int x){//记录高精下的左手数,便于记录乘积 
	string ret;
	for(int i=0;x;i++){
		ret=ret+char(x%10+'0');
		x/=10;
	}
	int len=ret.size();
	for(int i=0;i<len/2;i++) swap(ret[i],ret[len-1-i]);
	return ret;
}
int main(){
	cin>>n;
	cin>>x>>y;
	for(int i=1;i<=n;i++){
		cin>>a[i].a>>a[i].b;
		a[i].a1=chan(a[i].a);//记录高精下的左手数,便于记录乘积 
	}
	sort(a+1,a+1+n,cmp);
	string s;
	for(int i=1;i<=n;i++){//寻找最大值 
		s=div(x,a[i].b);
		if(compare(s,ans)==1) ans=s;
		x=mul(x,a[i].a1);
	}
	cout<<ans;
    return 0;
}
//#1: Wrong Answer.wrong answer On line 1 column 1, read 2, expected 4.
2023/12/19 15:38
加载中...