什么情况,求大佬解释

记录详情 - 洛谷 | 计算机科学教育新生态
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
struct node
{
	int x,y;
}a[N];
int n;
string s="1",Max;
bool cmp(node x,node y)
{
	return x.x*x.y<y.x*y.y;
}
string mul(string s,int a)
{
	int v[5*N],len;
	len=s.size();
	for(int i=1;i<=len;++i) v[i]=s[len-i]-48;
	for(int i=len+1;i<=len+10;++i) v[i]=0;
	for(int i=1;i<=len;++i) v[i]*=a;
	for(int i=1;i<=len;++i)
	{
		v[i+1]+=v[i]/10;
		v[i]%=10;
	}
	while(v[len+1])
	{
		len++; 
		v[len+1]+=v[len]/10;
		v[len]%=10;
	}
	string jhd="";
	for(int i=len;i>=1;--i) jhd+=char(v[i]+48);
	return jhd;
}
string div(string s,int a)
{
	int v[5*N],t[5*N],x=0,len,f=0,top;
	len=s.size();
	for(int i=1;i<=len;++i) v[i]=s[i-1]-48;
	for(int i=1;i<=len;++i)
	{
		x=x*10+v[i];
		t[i]=x/a;
		x%=a;
	}
	for(int i=1;i<=len;++i)
	if(t[i])
	{
		top=i;
		break;
	}
	string wzh="";
	for(int i=top;i<=len;++i) wzh+=char(t[i]+48);
	return wzh;
}
string ex_max(string a,string b)
{
	if(a.size()<b.size()) return b;
	if(a.size()>b.size()) return a;
	if(a<b) return b;
	return a;
}
int main()
{
	cin>>n>>a[0].x>>a[0].y;
	for(int i=1;i<=n;++i) cin>>a[i].x>>a[i].y;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;++i)
	{
		s=mul(s,a[i-1].x);
		Max=ex_max(Max,div(s,a[i].y));
	}
	cout<<Max;
	return 0;
}

记录详情 - 洛谷 | 计算机科学教育新生态
代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
struct node
{
	int x,y;
}a[N];
int n;
string s="1",Max;
bool cmp(node x,node y)
{
	return x.x*x.y<y.x*y.y;
}
string mul(string s,int a)
{
	int v[5*N],len;
	len=s.size();
	for(int i=1;i<=len;++i) v[i]=s[len-i]-48;
	for(int i=len+1;i<=len+10;++i) v[i]=0;
	for(int i=1;i<=len;++i) v[i]*=a;
	for(int i=1;i<=len;++i)
	{
		v[i+1]+=v[i]/10;
		v[i]%=10;
	}
	while(v[len+1])
	{
		len++; 
		v[len+1]+=v[len]/10;
		v[len]%=10;
	}
	string jhd="";
	for(int i=len;i>=1;--i) jhd+=char(v[i]+48);
	return jhd;
}
string div(string s,int a)
{
	int v[5*N],t[5*N],x=0,len,f=0,top;
	len=s.size();
	for(int i=1;i<=len;++i) v[i]=s[i-1]-48;
	for(int i=1;i<=len;++i)
	{
		x=x*10+v[i];
		t[i]=x/a;
		x%=a;
	}
	for(int i=1;i<=len;++i)
	if(t[i])
	{
		top=i;
		break;
	}
	string wzh="";
	for(int i=top;i<=len;++i) wzh+=char(t[i]+48);
	return wzh;
}
string ex_max(string a,string b)
{
	if(a.size()<b.size()) return b;
	if(a.size()>b.size()) return a;
	if(a<b) return b;
	return a;
}
int main()
{
	cin>>n>>a[0].x>>a[0].y;
	for(int i=1;i<=n;++i) cin>>a[i].x>>a[i].y;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;++i)
	{
		s=mul(s,a[i-1].x);
		Max=ex_max(Max,div(s,a[i].y));
	}
	cout<<Max;
	return 0;
}
1 个赞

@点人
@chenxi1 @2345安全卫士 @stringdp100005 @我命由我不由天

1 个赞

会不会是有0的原因?(看讨论区看到的)

1 个赞

什么0

1 个赞

我也不知道,我这题的高精也有神秘输出

1 个赞

我下个数据

1 个赞

知道了最终答案是1/10,而我的除法是把所有0删了,应该保留一个

1 个赞

那为啥一个AC,一个WA

1 个赞

而且去年暑假的AC代码,现在交是WA

1 个赞

那时也有hack

1 个赞

突然想起了之前上课时我同学发表了一个世界级言论:注释会影响代码的运行结果

1 个赞

什么玩意,里面是不是有随机的东西

1 个赞

好像是个双向搜索的题,我也不是很清楚