关注
我事后想了一下,double被卡精度应该是过程中加到了一个比较大的数,double用了很多位去表示整数部分。办法就是利用一个long long去模拟,由于没有负数还可以是unsigned的,等于完整利用上了64位精度。具体操作就是在每次加上去前 *N,N是一个合适的较大值,最后再除掉,这样模拟了一个固定阶数的小数。代码放在下面,没有仔细调输出,并且也不能保证能ac,毕竟我没办法再测试了。另一种思路就是每次都将整数部分提取出来放到一个int里,这样double可以完整保留小数部分的精度。
#include<bits/stdc++.h>
using namespace std;
unsigned long long N=10000000000;
unsigned long long M=N/10000;
int main()
{
int n=10000;
unsigned long long sum=0;
if(n==1){
printf("1.0000\n");
return 0;
}
for(int i=1; i<=n-1; i++){
int j=n-i;
if(abs(i-j)<2){
sum = sum + N*max(i,j);
}else{
sum = sum + N*min(i,j);
int k=abs(i-j);
unsigned long long temp=0;
for(int t=1; t<=k-1; t++){
temp = temp + N*max(t, k-t);
}
sum = sum + temp/(k-1);
}
}
unsigned long long res = sum/(n-1);
double ret = res/N + res%N/M;
if(res%N/M==0) printf("%.4lf\n", ret);
else printf("%d.%d\n", res/N, res%N/M);
}
查看原帖
2 5
相关推荐
牛客热帖
更多
正在热议
更多
# 如何一边实习一边找下家? #
25411次浏览 179人参与
# 实习生如何通过转正 #
129486次浏览 1466人参与
# 巨人网络春招 #
9774次浏览 163人参与
# 跟HR说什么能被秒回? #
7961次浏览 150人参与
# 电信求职进展汇总 #
45118次浏览 207人参与
# 春招/暑实第一面是哪家? #
17122次浏览 217人参与
# MiniMax求职进展汇总 #
12488次浏览 222人参与
# 快手年终开大包 #
11742次浏览 97人参与
# 海信求职进展汇总 #
97861次浏览 419人参与
# 面试官最爱问的 AI 问题是...... #
13381次浏览 471人参与
# 银行笔面经互助 #
184620次浏览 1303人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
2319次浏览 82人参与
# 秋招提前批,你开始投了吗 #
728912次浏览 8459人参与
# 设计人秋招体验最好的公司 #
85886次浏览 742人参与
# 你的嫡系AI是哪个? #
3390次浏览 95人参与
# 现在入门AI应该走哪些方向? #
3350次浏览 84人参与
# 你收到了哪些公司的笔试? #
15432次浏览 85人参与
# 迅雷笔试 #
5324次浏览 27人参与
# 机械人,说说你的烦心事 #
135382次浏览 1136人参与
# 你最近一次加班是什么时候? #
114511次浏览 561人参与
# 找工作中的小确幸 #
85088次浏览 463人参与
# 实习学到最有价值的工作习惯 #
64594次浏览 491人参与
查看6道真题和解析