关注
我事后想了一下,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
相关推荐
牛客热帖
更多
正在热议
更多
# mt对你说过最有启发的一句话 #
18691次浏览 237人参与
# 工作以后,你父母对你啥态度 #
21758次浏览 160人参与
# 秋招被挂春招仍然能投的公司 #
3018次浏览 46人参与
# 秋招特别不鸣谢 #
8211次浏览 116人参与
# 摸鱼被leader发现了怎么办 #
85196次浏览 560人参与
# 什么是优秀的实习经历 #
4073次浏览 149人参与
# 今年秋招你收到了多少封邮件? #
12248次浏览 164人参与
# 选实习,你更看重哪方面? #
6786次浏览 153人参与
# 工作中遇到的歹人 #
16347次浏览 206人参与
# 工作后,你落下了哪些病根 #
7221次浏览 147人参与
# 2025,我想...... #
79954次浏览 633人参与
# 被上班搭子“传染”了哪些习惯 #
3083次浏览 75人参与
# 找工作有哪些冷知识 #
201931次浏览 2579人参与
# 实习简历求拷打 #
681次浏览 21人参与
# 考研失败就一定是坏事吗? #
165746次浏览 1213人参与
# 工作后明白的那些道理 #
41767次浏览 630人参与
# 一人一个landing小技巧 #
137833次浏览 1491人参与
# 听到哪句话就代表面试稳了or挂了? #
236795次浏览 1675人参与
# 打工人的精神状态 #
121847次浏览 1417人参与
# 如何快速融入团队? #
38091次浏览 284人参与

