Relax! It's just a game(排列组合,简单)

Relax! It's just a game

Time Limit:3000MS    Memory Limit:0KB    64bit IO Format:%lld & %llu

Description

Download as PDF

You: What's the score? Did I miss much?

Me: It's 2-1 for elAhli and the second half just started. The first half was quite boring.

You: Who scored first? elAhli or ezZamalek?

Me: What difference does it make?

You: Big difference! I can predict the outcome of the match if I knew the order of which goals were scored in the first half.

Me: What do you mean?

You: It's 2-1 for elAhli, right? One of three things could have happened: elAhli scored two goals then ezZamalek scored; Or, elAhli scored its first goal, then ezZamalek, then elAhli again; Or, ezZamalek scored first, then elAhli scored its two goals.

Me: So?!! I still don't understand what difference does that make? It's still 2-1 for elAhli! Why don't you just relax and let us continue watching the game in peace.

You: You don't understand!! I believe theprobability of who'll win depends on the order of how goals were scored. Now I have to predict the outcome for 3 possibilities.

Me: And what if the score was 3-2? What would you have done then?

You: I would have to work for 5 different possibilities. No?

Me: Of course not! The number of possibilities isn't always equal to the sum.

You: Can you tell me when will it be equal to the sum?

Me: You're a programmer, why don't you write a program that counts the number of possibilities and compare it to the sum?

You: I don't have the time, I want to watch the match. Besides, I have nine other problems to worry about.

Me: I'll give you a hint. The possibilities will be equal to the sum only if one of the teams scored a certain number of goals.

Input

Your program will be tested on one or more test cases. Each test case specifies two natural numbers (A and B) (separated by one or more spaces) representing the score of the first half. No team will be able to score more than 10 goals. The last line of the input file contains two -1's (which is not part of the test cases.)

Output

Format For each test case where the number of possibilities is equal to the sum, print:


A+B=C


Where A and B are as above and C is their sum. If the number of possibilities is not equal to the sum, replace the `=' sign with `!=' (without the quotes.)

Sample Input

2 1
1 0
-1 -1

Sample Output

2+1=3
1+0=1


思路:进球总数为a+b,容易想到所有排列情况为(a + b)!,但注意同一个队伍所进的球在排列中不应当视为互异,比如甲队进2个球:a1,a2,则a1a2和a2a1是同一种排列,于是所有排列情况数应为:(a + b)! / (a ! * b!),所以可能的情况数等于两队进球总和时有:

(a + b)! / (a ! * b!)= a + b,即是(a + b - 1)! / (a ! * b!) = 1……(1)。.利用这个关系就能判断对于特定的a和b,情况数和a+b的关系。注意题目中给的提示“The possibilities will be equal to the sum only if one of the teams scored a certain number of goals”,化简(1),可以得到,a、b中最小值为1,也就是说,a和b至少有一个为1。

还需要注意的是,a = b = 0时,情况数不等于进球总数,这个时候情况数为1.

AC CODE:

//Memory: 0 KB 		Time: 12 MS
//Language: C++ 4.1.2 		Result: Accepted

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

long long fact(long long n)
{
    if(n == 1 || n == 0) return 1;
    else return n * fact(n - 1);
}

int main()
{
    long long a, b;
    int idx;
    double p;
    string str[2] = {"=", "!="};
    while(cin >> a >> b && a != -1 && b != -1)
    {
        idx = 1;
        if(a+b)
        {
            p = 1.0 * fact(a + b - 1) / fact(a) / fact(b);
            if(fabs(p - 1) <= 1e-8)
            idx = 0;
        }
        cout << a << "+" << b << str[idx] << a + b << endl;
    }
    return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值