关注
我事后想了一下,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
相关推荐
哈哈哈,你是老六:你回答我能拿到比你这公司还好的大厂offer,打一下面试官的脸,我上家的小组长恶心我,裁我,我拿到一个涨薪30%的offer就打了他的脸,而且我没有耽误一天,平稳的衔接
查看21道真题和解析 点赞 评论 收藏
分享
01-13 15:03
广东外语外贸大学南国商学院 产品经理 点赞 评论 收藏
分享
_世界和平:可以偷偷吃肉,但是不要在饥饿的人面前一边吃肉一边吧唧嘴还嫌肉不好吃 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 为了入行xx岗,我学了__ #
7145次浏览 115人参与
# 你都见过什么样的草台班子? #
9956次浏览 80人参与
# 简历第一个项目做什么 #
8160次浏览 122人参与
# 被说“做题家”,你的反应是_____? #
2946次浏览 81人参与
# 实习的你做了哪些离谱的工作 #
11119次浏览 124人参与
# Prompt分享 #
3312次浏览 91人参与
# 找实习记录 #
39212次浏览 579人参与
# 工作压力大,你会干什么? #
15088次浏览 334人参与
# 从哪些方向判断这个offer值不值得去? #
48690次浏览 342人参与
# AI让你的思考变深了还是变浅了? #
5730次浏览 146人参与
# 找工作前vs找工作后的心路变化 #
37287次浏览 301人参与
# 如果不上班,你会去做什么 #
8254次浏览 294人参与
# 多益网络求职进展汇总 #
62215次浏览 281人参与
# 入职以后才知道的校招谎言 #
117230次浏览 747人参与
# 大家每天通勤多久? #
75453次浏览 537人参与
# 今年秋招还有金九银十吗 #
71419次浏览 502人参与
# 邪修省钱套路 #
8425次浏览 268人参与
# 校招入职后的感受 #
466531次浏览 3629人参与
# 如果让你发明个APP,你会想做什么 #
2475次浏览 57人参与
# 通信硬件薪资爆料 #
1201999次浏览 7196人参与
