cf396B On Sum of Fractions

Let's assume that

  • v(n) is the largest prime number, that does not exceed n;
  • u(n) is the smallest prime number strictly greater than n.

Find .

Input

The first line contains integer t (1 ≤ t ≤ 500) — the number of testscases.

Each of the following t lines of the input contains integer n (2 ≤ n ≤ 109).

Output

Print t lines: the i-th of them must contain the answer to the i-th test as an irreducible fraction "p/q", where p, q are integers, q > 0.

Examples
Input
2
2
3
Output
1/6
7/30

                

写写1/v(i)u(i)的前几项就能发现规律

i    2   3   4   5

v   2   3   3   5

u   3   5   5   7

如果用个f(i)表示1/v(i)u(i),那么对于一个质数x,有f(2)+f(3)+...+f(x-1)=1/2-1/x

然后在对于一个夹在两质数a,b之间的x,显然从a到x的f值都是a/b,所以就是找到n前后最近的质数,把两分式通分一下就好了

这里我是直接n往前往后Miller-Robin找第一个质数,不过sqrt(n)的暴力应该也能卡过去?

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<algorithm>
 6 #include<cmath>
 7 #include<queue>
 8 #include<deque>
 9 #include<set>
10 #include<map>
11 #include<ctime>
12 #define LL long long
13 #define inf 0x7ffffff
14 #define pa pair<int,int>
15 #define mkp(a,b) make_pair(a,b)
16 #define pi 3.1415926535897932384626433832795028841971
17 using namespace std;
18 inline LL read()
19 {
20     LL x=0,f=1;char ch=getchar();
21     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
22     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
23     return x*f;
24 }
25 LL mul(LL x,LL n,LL MOD)
26 {
27     LL res=x*n-(LL)((long double) x*n/MOD+0.5)*MOD;
28     while (res<0)res+=MOD;
29     while (res>=MOD)res-=MOD;
30     return res;
31 }
32 LL qpow(LL x,LL n,LL MOD)
33 {
34     x=(x%MOD+MOD)%MOD;
35     LL p=x,con=1;
36     while (n)
37     {
38         if (n&1)con=mul(con,p,MOD);
39         p=mul(p,p,MOD);
40         n>>=1;
41     }
42     return con;
43 }
44 bool witness(LL a,LL b)
45 {
46     if (a==b)return true;
47     LL s=b-1;
48     int t=0;
49     while (!(s&1))s>>=1,t++;
50     LL x=qpow(a,s,b);
51     if (x==1)return 1;
52     while (t--)
53     {
54         if (x==b-1)return true;
55         x=mul(x,x,b);
56         if (x==1)return false;
57     }
58     return false;
59 }
60 bool isprime(LL x)
61 {
62     if (x==0||x==1)return false;
63     static int p[]={2,3,5,7,11,13,17,19,23,29,31};
64     for (int i=0;i<=10;i++)
65         if (!witness(p[i],x))return false;
66     return true;
67 }
68 inline LL gcd(LL a,LL b)
69 {
70     if (a<b)swap(a,b);
71     return b==0?a:gcd(b,a%b);
72 }
73 int main()
74 {
75     int T=read();
76     while (T--)
77     {
78         LL x=read(),y,z,t,ans1,ans2;
79         for (y=x;y>=2;y--)if (isprime(y))break;
80         for (z=x+1;z<=1e9+7;z++)if (isprime(z))break;
81         //ans=1/2-1/y+(x-y+1)*y/z
82         ans1=y*z-2*z+2*x-2*y+2;ans2=2*y*z;
83         t=gcd(ans1,ans2);ans1/=t;ans2/=t;
84         printf("%lld/%lld\n",ans1,ans2);
85     }
86 }
cf396B

 

转载于:https://www.cnblogs.com/zhber/p/7283426.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值