汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。但是汤姆不认识汉字,他就想胡乱地贴成一行。
请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?
答案是一个分数,请表示为两个整数比值的形式。例如: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); }