HUD——5194

//呜呜,原来杭电不能用__gcd//

我的代码本来只有几行,这下怎来这么多,而且非常笨,哎;

解析:考虑期望的可加性。第
   
    i(1i<n+m)
   个位置上出现0,第
   
    i+1
   个位置上出现1的概率是
   
    mn+m×nn+m1
   ,那么答案自然就是
   
    i=1n+m1mn+m×nn+m1=nmn+m
   
如果你不能马上想到上述的简便的方法,也可以选择暴力枚举所有01串,也是可以AC的。最后一步你需要再计算一下gcd,十分简便。

原本代码:

#include<stdio.h>
#include<algorithm>
using namespace std; int main() { int m,n; while(scanf("%d%d",&m,&n)!=EOF) { int t=__gcd(m*n,m+n);
        printf("%d/%d\n",(m*n)/t,(m+n)/t); } return 0; }
改了后的代码:
#include<stdio.h> int main() {     int m,n;     while(scanf("%d%d",&m,&n)!=EOF)     {         int i,t;         for(i=1;i<=(m+n);i++)         {             if((m+n)%i==0&&(m*n)%i==0)             {                 t=i;             }         }         printf("%d/%d\n",(m*n)/t,(m+n)/t);     }     return 0; } 

你可能感兴趣的:(HUD——5194)