【第一届“文翁杯”现场竞技赛】T4—文翁的难题

本文介绍了一种利用对数性质优化乘法比较运算的算法,通过将乘法转换为对数加法,有效提高了计算效率和精度。文章详细展示了如何在编程中实现这一算法,并分享了在实际应用中遇到的精度问题及解决方案。

传送门

如果知道了并想到了对数的话就是水题了

由于对数良好的性质log(a∗b)=log(a)+log(b)log(a*b)=log(a)+log(b)log(ab)=log(a)+log(b)

所以我们可以将乘转化为对数来比较大小

结果开始因为精度炸了好多次233…

#include<bits/stdc++.h>
using namespace std;
#define eps 1e-9
int n,a[100005],b[100005];
long double x[100005],y[100005];
inline int read(){
	char ch=getchar();
	int res=0,f=1;
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar();
	return res;
}
signed main(){
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read(),b[i]=read();
		x[1]+=log((double)a[i]),y[1]+=log((double)b[i]);
		if(x[1]+eps>y[1]&&y[1]+eps>x[1])puts("equal");
		else if(x[1]+eps>y[1])puts("A");
		else if(y[1]+eps>x[1])puts("B");
	}
	
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值