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;
}