裸题

来源:互联网 发布:canbot 软件 编辑:程序博客网 时间:2024/06/09 23:49
Problem DescriptionHere is no naked girl nor naked runners, but a naked problem: you are to find the K-th smallest element in the set of all irreducible fractions p/q,with 0<p<q<=N.InputThe first line of input is an integer T(T<=1000), indicating there are T cases.For each cases, there is one line with two positive integers N and K(1<=K<N<=100000).OutputFor each case, output one line containing the answer.Sample Input45 15 25 35 4Sample Output1/51/41/32/5//题解:???//标程:#include<iostream>#include<cstdio>using namespace std;const int size = 1000010;int a1[size],a2[size],b1[size],b2[size],s[size];int main(){//  freopen("a.txt","r",stdin);    int t, n, k, a, b;    cin >> t;    while(t --)    {        cin >> n >> k;        a1[0] = s[0] = 0;        b1[0] = a2[0] = b2[0] = 1;        int i = 0;        while(1)        {//            printf("i = %d a1 = %d b1 = %d a2 = %d b2 = %d\n",i,a1[i],b1[i],a2[i],b2[i]);            a = a1[i] + b1[i];            b = a2[i] + b2[i];            printf("a = %d, b = %d\n",a,b);            if(b > n) i --;            else if(s[i] == 0)            {                a1[i + 1] = a1[i];                a2[i + 1] = a2[i];                b1[i + 1] = a;                b2[i + 1] = b;//              printf("i = %d a1 = %d a2= %d b1 = %d b2 = %d\n",i,a1[i+1],a2[i+1],b1[i+1],b2[i+1]);                s[i] ++;                i ++;                s[i] = 0;            }            else            {                k --;                if(k == 0) break;                a1[i] = a;                a2[i] = b; //               printf("i = %d a1 = %d a2 = %d\n",i,a1[i],a2[i]);                s[i] = 0;            }        }        printf("%d/%d\n",a,b);    }    return 0;}

0 0
原创粉丝点击