数论——coin sum

37 篇文章 1 订阅

硬币求和
这道题实在是太迷惑了,先说求最小值,但其实既然堆一座塔,其实答案是不会变的。
答案都是 1 / 2 ∗ ∑ i = 1 n 1/2*\sum_{i=1}^{n} 1/2i=1n 1/ n \sqrt{n} n
但是因为n<=1e18,所以不能直接求,
这时就需要化简式子
因为 1 2 ∗ 1 n > 1 n + n + 1 = n + 1 − n \frac{1}{2}*\frac{1}{\sqrt{n}}>\frac{1}{\sqrt{n}+\sqrt{n+1}}=\sqrt{n+1}-\sqrt{n} 21n 1>n +n+1 1=n+1 n
同理, 1 2 ∗ 1 n < 1 n + n − 1 = n − n − 1 \frac{1}{2}*\frac{1}{\sqrt{n}}<\frac{1}{\sqrt{n}+\sqrt{n-1}}=\sqrt{n}-\sqrt{n-1} 21n 1<n +n1 1=n n1
所以 n + 1 − 1 < 原 式 < n \sqrt{n+1}-1<原式<\sqrt{n} n+1 1<<n
因为误差在±1之间,所以随便搞搞就行了

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
ll n;
double l,r;
int main(){
	scanf("%lld",&n);
	l=sqrt(n+1)-1,r=sqrt(n);
	ll ans=((l+r)/2);
	printf("%lld",ans);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值