zoukankan      html  css  js  c++  java
  • 【CodeForces 396B】On Sum of Fractions

    链接:

    题目

    博客园

    题目大意:

    设:

    • (u(n)) 是不超过 (n) 的最大素数。
    • (v(n)) 是大于 (n) 的最小素数。

    给定一个 (n),求出 (sum_{i=2}^{n}frac{1}{u(i)v(i)})

    正文:

    我们尝试拆开原式:

    [sum_{i=2}^{n}frac{1}{u(i)v(i)}=frac{1}{2 imes3}+frac{1}{3 imes5}+frac{1}{3 imes5}+frac{1}{5 imes7}+frac{1}{5 imes7}+cdots+frac{1}{u(n) imes v(n)} ]

    我们发现,这几个分式中有几个会是重复的,像是这里有两个 (frac{1}{3 imes5}),和两个 (frac{1}{5 imes7})。而它们的数量就是 (v(i)-u(i))。因为重复的分式相当于是在这个区间 (left[u,v(i) ight)) 里。

    由此可得:

    [egin{aligned}&frac{1}{2 imes3}+frac{1}{3 imes5}+frac{1}{3 imes5}+frac{1}{5 imes7}+frac{1}{5 imes7}+cdots+frac{1}{u(n) imes v(n)}\=&frac{1}{2 imes3}+frac{5-3}{3 imes5}+frac{7-5}{5 imes7}+cdots+frac{v(n)-u(n)}{u(n) imes v(n)}\=&left(frac{1}{2}-frac{1}{3} ight)+left(frac{1}{3}-frac{1}{5} ight)+left(frac{1}{5}-frac{1}{7} ight)+cdots+left(frac{1}{u(n)}-frac{1}{v(n)} ight)end{aligned} ]

    到这里,你会发现式子里面可以消掉一些分式,只剩下 (frac{1}{2}-frac{1}{v(n)})

    我爱裂项题。

    代码:

    int t;
    ll n;
    
    inline bool isPri(ll x)
    {
    	for (ll i = 2; i * i <= x; i ++)
    		if(x % i == 0) return 0;
    	return 1;
    }
    
    ll gcd (ll a, ll b) {return b? gcd (b, a % b): a;} 
    
    int main()
    {
    	for (scanf ("%d", &t); t--; )
    	{
    		scanf ("%lld", &n);
    		bool flagu = 0, flagv = 0;
    		ll u = n + 1, v = n;
    		for (flagu = isPri(u), flagv = isPri(v); !flagu || !flagv; )
    		{
    			if(!flagu) u++, flagu = isPri(u);
    			if(!flagv) v--, flagv = isPri(v);
    		}
    		ll a = v * u - 2 * u + 2 * n - 2 * v + 2, 
    		   b = 2 * u * v,
    		   Gcd = gcd(a, b);
    		printf ("%lld/%lld
    ", a / Gcd, b / Gcd);
    	}
    	return 0;
    }
    
  • 相关阅读:
    oracle 11g 数据库密码大小写敏感性更改
    OGG 课程 第一课
    xmanager
    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + 物理 dg
    GTONE安装Eclipse插件
    JDK安装与环境变量配置
    JAVA基础
    操作符总结
    物理CPU查看方式
    SQL SERVER性能调优
  • 原文地址:https://www.cnblogs.com/GJY-JURUO/p/14232457.html
Copyright © 2011-2022 走看看