poj1969---找规律

题意:按照s型分别给数编号,给

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    while(scanf("%d",&n) != EOF)
    {
        int s=0,k=1;
        while(1)
        {
            s+=k;//统计个数,当前几斜线和大于了规定的序号,说明此时该数在第k根斜线
            if(s>=n)
            {//将分子和分母关系图分为两块,斜线分为两种,第奇数条
                if(k%2) printf("TERM %d IS %d/%d\n",n,s-n+1,k-s+n);//第奇数条
                else printf("TERM %d IS %d/%d\n",n,k-s+n,s-n+1);//第偶数条
                break;
            }
            k++;
        }
    }
    return 0;
}
/*对k-s+n和s-n+1理解:
对分子,奇数列是在递减,偶数列递增
对分母,奇数列在递增,偶数列在递减
图中逻辑关系是:奇数列分子递减,分母递增
偶数列,分子递增,分母递减
递减用s-n+1,递增用k-s+n

 

出一个序号,输出这个数

posted @ 2015-05-26 22:10  Gabyler  阅读(143)  评论(0编辑  收藏  举报