天梯 1083 Cantor表
解题报告:发现规律就可以了,斜着看,第一条线上有1个,第二条线上有2个,....然后求出等差数列前n项和,求出N在第几条线上,然后就看N是在这条线上的第几个就可以了。
1 #include<cstdio> 2 const int MAX = 10000000+5; 3 int main() { 4 int i,N,sum,d; 5 scanf("%d",&N); 6 for(i = 1;i<MAX;++i) 7 if(N <= (1+i)*i/2) { 8 sum = (1+(i-1))*(i-1)/2; 9 break; 10 } 11 d = N - sum; 12 if(i & 1) 13 printf("%d/%d\n",i+1-d,d); 14 else printf("%d/%d\n",d,i+1-d); 15 return 0; 16 }