关注
我事后想了一下,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
相关推荐
点赞 评论 收藏
分享
05-15 19:57
西安建筑科技大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 聊聊这家公司值得去吗 #
232792次浏览 2182人参与
# kpi面有什么特征 #
31562次浏览 202人参与
# 你认为哪个岗位找工作最卷 #
12245次浏览 41人参与
# 职场人,说说你的烦心事 #
8493次浏览 71人参与
# 一人一个landing小技巧 #
78962次浏览 1123人参与
# 职场上哪些事情令人讨厌 #
16635次浏览 82人参与
# 秋招最大的收获是什么? #
33838次浏览 296人参与
# 小红书求职进展汇总 #
56066次浏览 485人参与
# 聊聊你的职场新体验 #
157398次浏览 1369人参与
# 机械制造岗投递时间线 #
22707次浏览 346人参与
# 职场吐槽大会 #
205309次浏览 1635人参与
# 研究所VS国企,该如何选 #
180558次浏览 1769人参与
# 为了找工作你投递了多少公司? #
9349次浏览 127人参与
# 大家每天通勤多久? #
41946次浏览 329人参与
# 通信硬件牛牛的实习日记 #
7143次浏览 65人参与
# 职场破防瞬间 #
234883次浏览 2125人参与
# 总结:哪家公司面试体验感最好 #
47594次浏览 336人参与
# tplink提前批进度交流 #
162702次浏览 1378人参与
# 找工作前vs找工作后的心路变化 #
9569次浏览 102人参与
# 担心入职之后被发现很菜怎么办 #
126303次浏览 754人参与