关注
我事后想了一下,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
相关推荐
昨天 15:41
陕西师范大学 Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
10607次浏览 260人参与
# 软开人,秋招你打算投哪些公司呢 #
100116次浏览 939人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
20544次浏览 176人参与
# 实习,不懂就问 #
21921次浏览 330人参与
# 你觉得现在还能进互联网吗? #
3484次浏览 85人参与
# 如何准备秋招 #
7256次浏览 124人参与
# 每个月的工资都是怎么分配的? #
10763次浏览 218人参与
# 秋招什么时候开投比较合适? #
4506次浏览 88人参与
# 技术岗笔试题求解 #
75182次浏览 974人参与
# 预测一下26届秋招形势 #
17066次浏览 174人参与
# 打工人的精神状态 #
52815次浏览 956人参与
# 机械实习一天多少钱合适? #
28474次浏览 176人参与
# 高考出分的那一天,我__ #
12425次浏览 192人参与
# 牛客十周岁生日快乐 #
144642次浏览 1609人参与
# 安利/避雷我的专业 #
75715次浏览 522人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
111789次浏览 788人参与
# 你们公司几号发工资 #
18596次浏览 115人参与
# 来聊聊你认为的薪资天花板是哪家? #
30566次浏览 174人参与
# 设计人如何选offer #
116667次浏览 728人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61885次浏览 493人参与
# 聊聊你的职场新体验 #
160930次浏览 1389人参与