Chinaunix首页 | 论坛 | 博客
  • 博客访问: 610284
  • 博文数量: 197
  • 博客积分: 7001
  • 博客等级: 大校
  • 技术积分: 2155
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-24 00:29
文章分类

全部博文(197)

文章存档

2022年(1)

2019年(2)

2015年(1)

2012年(100)

2011年(69)

2010年(14)

2007年(3)

2005年(7)

分类: C/C++

2011-11-27 22:15:56


二分 lot - low top lod-lowdown mit-mid top mid-mid down ht-high top hd high down

#include
#include
#include
#include

using namespace std;


void frac_num(int lot, int lod, int mit, int mid, int ht, int hd, int m, int n)
{
    if(m * mid == n * mit){
        printf("\n");
    }
    else if(m * mid > n * mit){
        putchar('R');
        frac_num(mit, mid, mit + ht, mid + hd, ht, hd, m, n);
    }
    else{
        putchar('L');
        frac_num(lot, lod, lot + mit, lod+ mid ,mit, mid, m, n);
    }
}

void frac_cas(int lot, int lod, int mit, int mid, int ht, int hd, char *s)
{
    if(*s == '\0'){
        printf("%d %d\n", mit, mid);
    }
    else if(*s == 'R'){
        frac_cas(mit, mid, mit + ht, mid + hd, ht, hd, s + 1);
    }
    else{
        frac_cas(lot, lod, lot + mit, lod+ mid ,mit, mid, s + 1);
    }
}


void f()
{
    int M, N;
    scanf("%d%d", &M, &N);

    frac_num(0, 1, 1, 1, 1, 0, M, N);
}

void g()
{
    char s[30];

    scanf("%s", s);
    frac_cas(0, 1, 1, 1, 1, 0, s);
}

int main()
{
    int k, cas;
       
    scanf("%d", &cas);
    while(cas--){
        scanf("%d", &k);
        if(k == 1)
            f();
        else
            g();       
    }
    return 0;
}
阅读(1104) | 评论(0) | 转发(0) |
0

上一篇:Timus 1471

下一篇:Life of an Academic in the US

给主人留下些什么吧!~~