题目链接:http://acm.zzu.edu.cn:8000/problem.php?id=10492
10492: 啊,咸鱼
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 42 Solved: 13
[ Submit][ Status][ Web Board]
Description
从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说: 西墙有咸鱼,头齐尾不齐。追星十二载,粉圈未有名。大炮扛不住,写文常死机,闲来买买买,奈何工资低。花痴有微博,追剧aqy,早晚练酷跑,弹幕刷bili。又到黄金周,未有出游意,埋头苦搬砖,摸鱼看手机。刷新复刷新,饱总杳无音,专注打广告,半月已有余。满屏挖坟匠,喟然长叹息。忽闻饱更博,平地惊雷起。垂目轻咬唇,素颜半解衣,皓腕佩名表,耳中明月玑。转评忙飙车,污言寄美意,复看众咸鱼,皆成老司机。
现在小和尚念完经之后,发现有部分咸鱼已经翻身了(虽然咸鱼翻身之后还是咸鱼,但是我们假装咸鱼翻身之后和翻身之前是不同的),于是他想做一个游戏,游戏的规则如下:
他从这些咸鱼中随机拿出两条咸鱼,如果这两条咸鱼中,有一条已经翻身,另一条没翻身,则再放入一条没有翻身的咸鱼;否则,就放入一条已经翻身的咸鱼。当只剩一条咸鱼的时候,游戏终止。请问,最后剩余的一条咸鱼是已经翻身的咸鱼的概率是多少?
Input
第一行代表数据的组数t,接下来输入t(0 < t <= 10)组数据
每一组输入都只有一行,包含两个数n(0 <= n < 1e9)和m(0 <= m < 1e9),其中n表示已经翻身的咸鱼的数量,m表示没有翻身的咸鱼的数量(n + m >= 1)。
Output
对于每一组输入,它的输出包含一行,就是最后剩余的一条咸鱼是已经翻身的咸鱼的概率(结果保留6位小数)。
Sample Input
21 11 0
Sample Output
0.0000001.000000
HINT
Source
题目解析: 看着很复杂,要算概率什么的,其实概率是个坑,就是两个对立事件,判断下就可以了
注:已经翻身为@,未翻身为#,==》等价于
1. @@ —> 放入@ ==》 @ - 1
2. ## —> 放入@ ==》 ##换一个@
3. @# —> 放入# ==》 @ - 1
@会自动减少,如果#为偶数,最后肯定剩一个@ ;如果#为奇数,最后肯定为#
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<cmath>
#define N 110
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
using namespace std;
int main()
{
int t, m, n;
scanf("%d", &t);
while(t--)
{
scanf("%d%d", &m, &n);
if(n&1) printf("%.6f\n", 0.0);
else printf("%.6f\n", 1.0);
}
return 0;
}