Coin Test
TimeLimit: 1000MS MemoryLimit: 32768 Kb
Description
As is known to all , if you throw a coin up and let it droped on the desk there are usually three results.Yes, just believe what I say ~It can be the right side or the other side or standing on the desk.If you don't believe this , just try and try.In the past there were some famous mathematicians working on this.They repeat the throwing job once again .But Jacmy is a lasy boy.He is busy with dating or playing games.He have no time to throw a single coin for 100000 times.Here comes his idea .He just go to bank and exchange thousands of dollars into coins and then throw then on the desk only once. The only job left for him is to count the number of coins with three conditions.
He will show you the coins on the desk to you one by one.Please tell him the possibility of the coin on the right side as a fractional number if the possibility between the result and 0.5 is no larger than 0.003 .BE CAREFUL that even 1/2 , 50/100 , 33/66 are equal only 1/2 is accepted !If the difference between the result and 0.5 is larger than 0.003 please tell him "Fail".Or if you see one coin standing on the desk ,just say "Bingo" any way.
Input
There will be tow lines as input.The first line is a number N ( 1 < N < 1000000 ) telling you the number of coins on the desk.The second line is the result with N letters.The letters are "U" ,"D" or "S" ."U" means the coin is on the right side."D" means the coin is on the other side."S" means standing on the desk.
Output
If the test successeded , just output the possibility of the coin on the right side.If the test failed please output "Fail".If there is one or more "S" please output "Bingo".
Sample Input
6
UUUDDD
Sample Output
1/2
Hint
Given By GB
水题。数U占的比例,如果与0.5的差值小于等于0.003,输出比例,用最简分数表示,有S的话输出Bingo,其他输出Fail。
为什么会PE呢,因为结尾加换行了。 = =。以为里面有多组数据,就习惯性地加换行了,罚时了6*20分钟。崩溃。
view plaincopy to clipboardprint?
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int gcd(int m,int n)
{
return n == 0? m : gcd(n,m%n);
}
int main(void)
{
int n,u = 0,flag = 0;
char c;
double x;
scanf("%d",&n);
getchar();
for(int i=0; i<n; i++)
{
scanf("%c",&c);
if( c == 'U')
{
u++;
continue;
}
if( c == 'S' )
flag = 1;
}
if( flag )
{
printf("Bingo");
goto end;
}
x = (double)u/n;
if( fabs(x - 0.5) > 0.003 )
{
printf("Fail");
goto end;
}
else
{
int a = gcd(u,n);
printf("%d/%d",u/a,n/a);
}
end:
return 0;
}