HDU 2985 Another lottery(坑题)

点我看题目

题意 : 有n个人,每个人可以玩m轮,每一轮中每个参与者都有cj张票,第 i 轮的奖金是2的i次方,问你每个人所能赢得最多的奖金的概率是多少。

思路 : 这个题比较坑啊,其实不用去算前几轮的,因为题目中要能越多的奖金越好,所以肯定是最后一轮啊,所以把每个人手中最后一轮的票想加,然后占的那个比例就是要输出的。

#include <stdio.h>

#include <string.h>

#include <iostream>

using namespace std ;

int a[10100] ;

int gcd(int c,int b)

{

    return (b>0)?gcd(b,c%b):c;

} ;

int main()

{

    int m,n ;

    while(~scanf("%d %d",&m,&n))

    {

        if(m == 0 && n == 0)

            break ;

            int sum = 0 ;

        for(int i = 0 ; i < m ; i++)

        {

            for(int j = 0 ; j < n ; j++)

                scanf("%d",&a[i]) ;

            sum += a[i] ;

        }

        for(int i = 0 ; i < m ; i++)

        {

            if(a[i] == 0)

                printf("0 / 1\n") ;

            else {

                    int s = gcd(sum,a[i]) ;

                    printf("%d / %d\n",a[i]/s,sum/s) ;}

        }

    }

    return 0 ;

}
View Code

 

你可能感兴趣的:(HDU)