欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

好好学习

程序员文章站 2022-07-14 23:10:17
...
汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。但是汤姆不认识汉字,他就想胡乱地贴成一行。

请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?

答案是一个分数,请表示为两个整数比值的形式。例如:1/3 或 2/15 等。

如果能够约分,请输出约分后的结果。

注意:不要书写多余的空格。


请严格按照格式,通过浏览器提交答案。
注意:只提交这个比值,不要写其它附加内容,比如:说明性的文字。

答案 (10分)

 

代码:

#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#include <vector>
#include <algorithm>
#define inf 0x3f3f3f3f
#define mod 999101
using namespace std;

int mp[4] = {1,1,2,3};
bool vis[4];
int m,c;
void dfs(int k,int sum) {
    if(k >= 4) {
        if(sum == 1123) c ++;
        m ++;
        return;
    }
    for(int i = 0;i < 4;i ++) {
        if(!vis[i]) {
            vis[i] = true;
            dfs(k + 1,sum * 10 + mp[i]);
            vis[i] = false;
        }
    }
}
int gcd(int a,int b) {
    return b == 0 ? a : gcd(b,a % b);
}
int main() {
    dfs(0,0);
    int g = gcd(c,m);
    printf("%d/%d",c / g,m / g);
}