CF396B On Sum of Fractions 题解

题目大意:

定义 v ( n ) v(n) v(n) 为不大于 n n n 的最大素数, u ( n ) u(n) u(n) 为大于 n n n 的最小素数。

求 :

∑ i = 2 n 1 u ( n ) v ( n ) \sum^{n}_{i=2}\frac{1}{u(n)v(n)} i=2nu(n)v(n)1

的值。

题解:

这个式子看起来很难直接做,于是我们可以试着在 n n n 较小的情况下把它拆开找一找规律。

n = 11 n=11 n=11 时,原式为:

1 2 × 3 + 1 3 × 5 + 1 3 × 5 + 1 5 × 7 + 1 5 × 7 + 1 7 × 11 + 1 7 × 11 + 1 7 × 11 + 1 7 × 11 + 1 11 × 13 \frac{1}{2\times 3}+\frac{1}{3\times 5}+\frac{1}{3\times 5}+\frac{1}{5\times7}+\frac{1}{5\times7}+\frac{1}{7\times11}+\frac{1}{7\times11}+\frac{1}{7\times11}+\frac{1}{7\times11}+\frac{1}{11\times13} 2×31+3×51+3×51+5×71+5×71+7×111+7×111+7×111+7×111+11×131

我们会发现,有些分式是重复的,所以,我们可以化简为:

1 2 × 3 + 2 3 × 5 + 2 5 × 7 + 4 7 × 11 + 1 11 × 13 \frac{1}{2\times 3}+\frac{2}{3\times 5}+\frac{2}{5\times7}+\frac{4}{7\times11}+\frac{1}{11\times13} 2×31+3×52+5×72+7×114+11×131

然后,我们观察分式的分子和分母,可以发现,原式又为:

3 − 2 2 × 3 + 5 − 3 3 × 5 + 7 − 5 5 × 7 + 11 − 7 7 × 11 + 1 11 × 13 \frac{3-2}{2\times 3}+\frac{5-3}{3\times 5}+\frac{7-5}{5\times7}+\frac{11-7}{7\times11}+\frac{1}{11\times13} 2×332+3×553+5×775+7×11117+11×131

这个式子的前 4 4 4 项可以用小学的裂项芝士进行裂项,所以原式又可以化简为:

1 2 − 1 11 + 1 11 × 13 \frac{1}{2}-\frac{1}{11}+\frac{1}{11\times13} 21111+11×131

考虑其更一般的形式,我们会发现,只有最后的一项不能完全的裂完,所以要分开考虑,故

∑ i = 2 n 1 u ( n ) v ( n ) = 1 2 − 1 u ( n ) + ∑ i = u ( n ) n 1 u ( i ) v ( i ) \sum^{n}_{i=2}\frac{1}{u(n)v(n)}=\frac{1}{2}-\frac{1}{u(n)}+\sum^{n}_{i=u(n)}{\frac{1}{u(i)v(i)}} i=2nu(n)v(n)1=21u(n)1+i=u(n)nu(i)v(i)1

考虑如何解决最后一项,我们可以发现,最后一项拆开来后的每个分式的分母都是一样的,故:

∑ i = u ( n ) n 1 u ( i ) v ( i ) = n − u ( n ) + 1 u ( n ) v ( n ) \sum^{n}_{i=u(n)}{\frac{1}{u(i)v(i)}}=\frac{n-u(n)+1}{u(n)v(n)} i=u(n)nu(i)v(i)1=u(n)v(n)nu(n)+1

所以:

∑ i = 2 n 1 u ( n ) v ( n ) = 1 2 − 1 u ( n ) + n − u ( n ) + 1 u ( n ) v ( n ) = u ( n ) v ( n ) − 2 × u ( n ) − 2 × v ( n ) + 2 × n + 2 2 × u ( n ) v ( n ) \sum^{n}_{i=2}\frac{1}{u(n)v(n)}=\frac{1}{2}-\frac{1}{u(n)}+\frac{n-u(n)+1}{u(n)v(n)}=\frac{u(n)v(n)-2\times u(n)-2\times v(n) + 2\times n + 2}{2\times u(n)v(n)} i=2nu(n)v(n)1=21u(n)1+u(n)v(n)nu(n)+1=2×u(n)v(n)u(n)v(n)2×u(n)2×v(n)+2×n+2

由于素数的分布比较密集,所以可以暴力得到 u ( n ) u(n) u(n) v ( n ) v(n) v(n),最后约分输出答案即可。

一些粗略的证明:

Q:为什么对于任意的 n n n,拆开后除了分母为 u ( n ) v ( n ) u(n)v(n) u(n)v(n) 的项,都可以组合成分数裂项的形式?

A:考虑分母为 u ( i ) v ( i ) u(i)v(i) u(i)v(i) 的分式,因为 u ( i ) u(i) u(i) 是大于 i i i最小素数,并且 v ( i ) v(i) v(i) 是不大于 i i i最大素数,故分子必须不小于 v ( i ) v(i) v(i) 且小于 u ( i ) u(i) u(i),故除了最后的边界意外,每个分母为 u ( i ) v ( i ) u(i)v(i) u(i)v(i) 的分式,都有 u ( i ) − v ( i ) u(i)-v(i) u(i)v(i) 个。

Code:

#include<bits/stdc++.h>
using namespace std;
bool prime(int n) { //暴力判断素数
	if(n == 1) return false;
	for(int i = 2; i * i <= n; ++i) {
		if(n % i == 0) return false;
	}
	return true;
}
int T;
int main() {
	cin >> T;
	while(T --) {
		long long n, v, u; //注意long long
		cin >> n;
		u = n + 1;
		v = n;
		while(!prime(v)) u ++; //u(n)
		while(!prime(u)) v --; //v(n)
		long long fz = v * u - 2 * u  + 2 * n - 2 * v + 2, fm = 2 * u * v; //计算分子和分母
		long long g = __gcd(fz, fm);
		fz /= g; fm /= g; //约分
		cout << fz << '/' << fm << endl;
	} 
	return 0;
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值