(水题)洛谷

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
",res,sum-res);

}
原文地址:https://www.cnblogs.com/Yinku/p/10316261.html