首页 > ACM题库 > HDU-杭电 > hdu 2613 Hero待解决[解题报告]C++
2014
02-12

hdu 2613 Hero待解决[解题报告]C++

Hero

问题描述 :

Every one own herself hero. The different hero must be famous in different field. So to compare them is a difficult things. Now given every hero a integer value to express the degree of famous. We call it Fv.
yifenfei want to know who is the most famous hero, so he ask many people to get the answer. Lots of people tell him as that: the Fv of hero A / the Fv of hero B equal to p / q.

输入:

There are multiple cases in the input file.
Each case contains n (0< n <=27)
Next follow n line, each line as (hero A name # hero B name, p , q ).Length of name less 100 (the name will no ”#”). p, q is A positive integer less 10.

输出:

There are multiple cases in the input file.
Each case contains n (0< n <=27)
Next follow n line, each line as (hero A name # hero B name, p , q ).Length of name less 100 (the name will no ”#”). p, q is A positive integer less 10.

样例输入:

1
Zhao yun # ji yuan 4 6

2
Ji yuan # Lemon 3 5
Lemon # Qi shi wang 2 9 

样例输出:

Zhao yun 2
ji yuan 3

Ji yuan 6
Lemon 10
Qi shi wang 45


  1. #include <stdio.h>
    int main()
    {
    int n,p,t[100]={1};
    for(int i=1;i<100;i++)
    t =i;
    while(scanf("%d",&n)&&n!=0){
    if(n==1)
    printf("Printing order for 1 pages:nSheet 1, front: Blank, 1n");
    else {
    if(n%4) p=n/4+1;
    else p=n/4;
    int q=4*p;
    printf("Printing order for %d pages:n",n);
    for(int i=0;i<p;i++){
    printf("Sheet %d, front: ",i+1);
    if(q>n) {printf("Blank, %dn",t[2*i+1]);}
    else {printf("%d, %dn",q,t[2*i+1]);}
    q–;//打印表前
    printf("Sheet %d, back : ",i+1);
    if(q>n) {printf("%d, Blankn",t[2*i+2]);}
    else {printf("%d, %dn",t[2*i+2],q);}
    q–;//打印表后
    }
    }
    }
    return 0;
    }

  2. 代码是给出了,但是解析的也太不清晰了吧!如 13 abejkcfghid jkebfghicda
    第一步拆分为 三部分 (bejk, cfghi, d) * C(13,3),为什么要这样拆分,原则是什么?