题解 UVA880 Cantor Fractions

思路

小学就学过的找规律题目,重点是要记得二分。

很明显,第 ii 列的分母都为 ii,第 jj 行的分子为 ji+1j-i+1

AC 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

inline ll bin(ll n){
ll l=1,r=n;
while (l<r){
ll mid = (l+r)/2;
if (mid*(mid+1)/2>=n) r = mid;
else l = mid+1;
}
return l;
}

int main(){
ll n,r,s;
while(cin >> n){
if(n==1) cout << "1/1" << endl;
else if(n==2) cout << "2/1" << endl;
else{
r = bin(n);
s = n-r*(r-1)/2;
cout << r-s+1 << "/" << s << endl;
}
}
return 0;
}

题解 UVA880 Cantor Fractions
https://sunnyli.咕咕咕.eu.org/solution-UVA880/
作者
SunnyLi
发布于
2023年6月13日
许可协议