import java.io.BufferedInputStream;import java.util.*;publicclassMain{staticint n,i=1;publicstaticvoidmain(String[] args){Scanner cin=newScanner(newBufferedInputStream(System.in));n=cin.nextInt();while(i<n){n=n-i;//n indicate n element in rowi++;//i indicate number of plies}if(i%2==0)System.out.println(n+"/"+(i-n+1));else System.out.println((i-n+1)+"/"+n);cin.close();}}
二分法找斜线
import java.io.BufferedInputStream;import java.util.*;publicclassMain{staticint n,r,l,mid,a;// r, l, mid all indicate number of pliespublicstaticvoidmain(String[] args){Scanner cin=newScanner(newBufferedInputStream(System.in));n=cin.nextInt();l=1;r=n;while(l<r){mid=(r+l)/2;if(((mid+1)*mid)/2<n) l=mid+1;else r=mid;}a=n-(l*(l-1))/2;//why l indicate the target layerif(l%2==0)System.out.println(a+"/"+(l+1-a));else System.out.println((l+1-a)+"/"+a);cin.close();}}