圆周率日挑战(河南萌新3)

 

A-圆周率日挑战_河南萌新联赛2024第(三)场:河南大学 (nowcoder.com)

1.python-code

from decimal import *
getcontext().prec = 50
pi = Decimal("3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679")
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
mi = (float('inf'), 0, 0)
for i in range(n):
    x = a[i][0]
    y = a[i][1]
    mi = min(mi, ((abs(pi - Decimal(x) / Decimal(y)), x, y)))
print(*mi[1:])

2.java-code

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
       Scanner in = new Scanner(System.in);
     int n=in.nextInt();
int c=0;
        BigDecimal b = new BigDecimal("3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679");
        BigDecimal k = new BigDecimal("4.0");
long[] x=new long[n];
long[] y=new long[n];
    for(int i=0;i<n;i++){
x[i]=in.nextLong();
y[i]=in.nextLong();
        BigDecimal dividend = new BigDecimal(x[i]);
        BigDecimal divisor = new BigDecimal(y[i]);
        BigDecimal result = dividend.divide(divisor, 100, RoundingMode.HALF_UP);
        BigDecimal difference = result.subtract(b);
        BigDecimal absValue = difference.abs();
        int comparison = k.compareTo(absValue);
if(comparison>0){
    k=absValue;
    c=i;
}
 if(comparison==0){
     if(x[i]<x[c]){
         c=i;
     }
 }       
    }
        System.out.println(x[c]+" "+y[c]);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值