裸题

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)

Problem Description

Here 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.

Input

The 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).

Output

For each case, output one line containing the answer.

Sample Input

4
5 1
5 2
5 3
5 4

Sample Output

1/5
1/4
1/3
2/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)
        {
            a = a1[i] + b1[i];
            b = a2[i] + b2[i];
            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;
                s[i] ++;
                i ++;
                s[i] = 0;
            }
            else
            {
                k --;
                if(k == 0) break;
                a1[i] = a;
                a2[i] = b;
                s[i] = 0;
            }
        }
        printf("%d/%d\n",a,b);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值