标签:
#include<stdio.h>
#include<string.h>
int gcd(int a,int b)//求a,b的最大公约数
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
char str[700000];
int main()
{
int n,i,t,countu=0,len;
scanf("%d",&n);
scanf("%s",str);
len=strlen(str);
for(i=0;i<len;i++)
{
if(str[i]==‘U‘)
countu++;
if(str[i]==‘S‘)
{
printf("Bingo\n");
return 0;
}
}
if(countu==0)//概率为0
{
printf("0\n");
return 0;
}
if(countu==len)//概率为1
{
printf("1\n");
return 0;
}
t=gcd(countu,len);
printf("%d/%d",countu/t,len/t);//化简
}
/* 翻译
我们都知道,如果你扔一枚硬币并让它掉在桌子上,通常有三种结果。是的,相信我的话吧,它可能是正面朝上,背面朝上,亦或竖立起来。你不信吗,尽管试试吧。过去有些著名数学家研究过。他们一次次重复的扔硬币。但是jacmy是一个懒人,他忙着和女孩约会或玩游戏,没时间扔一枚硬币100000次。这是他的主意,去银行把成千上万的钱换成硬币只扔一次。这时要做的只是分别统计三种不同结果的硬币数。
他把桌子上每枚硬币给你看。请你用分数的形式告诉他硬币正面朝上的概率(当该概率在0.003和0.5之间),注意1/2,50/100,33/66是相等的,但只有1/2的形式才能通过!假如该概率小于0.003或大于0.5,则告诉他"Fail",当然如果你看到有一枚硬币竖立,输出"Bingo"即可。
输入
有两行作为输入。
第一行是一个整数N(1<N<65536),表示桌子上硬币的个数。
第二行是表示用来表示硬币朝向的N个字母,它们是"U","D","S". "U"表示正面朝上,"D"表示正面朝下,"S"表示竖立。
输出
若该实验成功,输出正面朝上的概率。若失败,则输出"Fail",如果有一个或多个"S",输出"Bingo"
*/
标签:
原文地址:http://www.cnblogs.com/mycapple-zgs-111411/p/4616787.html