(水题)洛谷 - P1014 - Cantor表

https://www.luogu.org/problemnew/show/P1014

很显然同一对角线的和是相等的。我们求出前缀和然后二分。

最后注意奇偶的顺序是相反的。

#include<bits/stdc++.h>
using namespace std;
#define ll long long

int prefix[100005];

int init(){
    prefix[1]=1;
    for(int i=2;i<=65535;i++){
        prefix[i]=prefix[i-1]+i;
    }
    //cout<<prefix[65535]<<endl;
}

int main(){
    init();
    int n;
    scanf("%d",&n);
    int id=lower_bound(prefix,prefix+65536,n)-prefix;
    id--;
    int res=n-prefix[id];
    int sum=id+2;
    if(sum%2==0)
        res=sum-res;
    printf("%d/%d\n",res,sum-res);

}

 

posted @ 2019-01-24 18:50  韵意  阅读(135)  评论(0编辑  收藏  举报