天梯 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 }
View Code

 

posted @ 2013-08-01 22:47  xiaxiaosheng  阅读(312)  评论(0编辑  收藏  举报