悖论问题

悖论问题

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 3
描述

先来看一个有趣的悖论:

如果你随机从下面的选项中选出一个答案,选到正确答案的概率是多少?

A.25% B.50% C.0% D.25%

当你仔细理解了上面的悖论之后,下面问题来了,如果现在随便给你一组选项,你能判断出它们否必然产生悖论吗?


输入
第一行输入一个整数T(T<=50),表示测试数据的组数
每组测试数据的第一行是一个整数N,表示选项的个数,随后的一行有N个分数(ai/bi),表示N个选项的值(1<=N<=100000)。所有分数都以最简原分数表示(特别地,如果值是整数,则分母当作1),0<=ai,bi<=100000。
输出
如果产生悖论则输出Yes,否则输出No
样例输入
3
4
1/4 1/2 0/1 1/4
3
1/3 1/3 1/2
6
1/2 1/2 1/2 1/3 1/3 0/1
样例输出
Yes
No

Yes

思路:题真心不易懂啊, 特别是这种逻辑学问题,看了网上的解释才隐隐明白。。。

/*1.如果选项中不存在0,则一定不悖论。 
比如1/3 1/3 1/2 
原因:只要发生相悖,则可以将其看作错误答案。可能
全部都是错误答案,则概率为0,而0木有,故一定不相悖。 
2.如果选项中存在0,可能会出现悖论。
(1)分母如果不是n的因子的话,那么其一定不是正确答案。比如n=6,那么1/5用于不会得到
(2)分母如果是n的因子的话
例如:1/3 1/3 1/2 1/2 1/2 0/1
如果1/3是正确答案----则有2/6=1/3
如果1/2是正确答案----则有3/6=1/2
则选择正确答案的概率为1/3+1/2=5/6 不存在,则概率为0
而选项中又存在0 相悖。
如果0是正确答案 -----则与1/6 相悖。*/

#include <stdio.h>
#include <map>

using namespace std;
map<int, int> m;
map<int, int>::iterator it;

int main()
{
    int t, n, a, b, i, sum;
    scanf("%d", &t);
    while(t--)
    {
        m.clear();
        scanf("%d", &n);
        for(i = 0; i < n; i++)
        {
            scanf("%d/%d", &a, &b);
            if(n%b == 0)
            {
                m[n/b*a]++;
            }
        }
        if(m[0] == 0)
        {
            printf("No\n");
        }
        else
        {
            sum = 0;
            for(it = m.begin(); it != m.end(); it++)
            {
                if(it->first == it->second)
                {
                    sum += it->first;
                }
            }
            if(sum == m[sum])
            {
                printf("No\n");
            }
            else
            {
                printf("Yes\n");
            }
        }
    }
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值