emnnn今天是2020/8/24
这题一开始拿到我第一反应是——找规律
1,1 1,2 1,3 1,4 1,5
2,1 2,2 2,3 2,4 2,5
3,1 3,2 3,3 3,4 3,5
4,1 4,2 4,3 4,4 4,5
5,1 5,2 5,3 5,4 5,5
蒟蒻把这个表格的每一个点标了坐标,很好我们接着看。
1/1 1/2 1/3 1/4 1/5
2/1 2/2 2/3 2/4 2/5
3/1 3/2 3/3 3/4 3/5
4/1 4/2 4/3 4/4 4/5
5/1 5/2 5/3 5/4 5/5
这是题目中给出的表,发现什么了吗?
表2的值=i/j!!!
但蒟蒻这里还要给出第二种解法!
二分!
如果有人不会二分可以搜这个网址:https://www.cnblogs.com/wkfvawl/p/9475939.html
这里面有详细的讲解,在这里蒟蒻就先不讲了,直接上思路
发现第i条斜线(即分子分母之和=i+1的所有项)中包含i*(i-1)/2+1至i*(i+1)中的每一项,所以可以二分分子分母之和,再根据分子分母之和的奇偶性直接计算第n项
时间复杂度O(㏒₂n),可以通过n≤1018,加上高精可通过n≤101000。
这算法不仅快还好打
把我们就上代码了!
#include<bits/stdc++.h>
using namespace std;
int main(){
long long l=1,r,mid,n,a;
scanf("%d",&n);
r=n;
while(
mid=(l+r)/2;
if(mid*(mid+1)/2
else r=mid;
}
a=n-l*(l-1)/2;
if(l%2==0)printf("%d/%d",a,l+1-a);
else printf("%d/%d",l+1-a,a);
return 0;
}
这是蒟蒻的第一篇题解,有不好的地方可以提出,谢谢