HDU 2985 Another lottery(水题)
大意:
给你n个人,每个人买m次彩票,第i次的奖金是2的i次方,求每个人赢的比其他人都多的可能性是多少。
思路:
就是只看最后一次就行,2的i次方,对于每个人来说,最后一次的奖要比前面的大很多,所以直接只看最后一次,算出概率gcd一下就行了。
1 #include <stdio.h> 2 #include <string.h> 3 4 int a[10010]; 5 6 int gcd(int a, int b) 7 { 8 return b > 0 ? gcd(b, a%b) : a; 9 } 10 11 int n, m; 12 13 void Solve() 14 { 15 while(~scanf("%d%d", &n, &m)) 16 { 17 if(!n && !m) 18 { 19 break; 20 } 21 int sum = 0; 22 for(int i = 0; i < n; ++i) 23 { 24 for(int j = 0; j < m; ++j) 25 { 26 scanf("%d", &a[i]); 27 } 28 sum += a[i]; 29 } 30 for(int i = 0; i < n; ++i) 31 { 32 int t = gcd(sum, a[i]); 33 //printf("%d\n", t); 34 printf("%d / %d\n", a[i]/t, sum/t); 35 } 36 } 37 } 38 39 int main() 40 { 41 Solve(); 42 43 return 0; 44 }