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
") ;
            else {
                    int s = gcd(sum,a[i]) ;
                    printf("%d / %d
",a[i]/s,sum/s) ;}
        }
    }
    return 0 ;
}
View Code
原文地址:https://www.cnblogs.com/luyingfeng/p/3632980.html