using System; using System.Collections.Generic; class Program {     static void Main(string[] args)     {         string str;         str = Console.ReadLine();         string[] ss = str.Split(' ');         int n = int.Parse(ss[0]);         int x = int.Parse(ss[1]);         List<List<int>> result = new List<List<int>>();         Dictionary<int, int> state = new Dictionary<int, int>();         GetAllPossible(n, n, x, ref state, ref result);         int possibles = 0;         int all = Convert.ToInt32(Math.Pow(6, n));         for (int i = 0; i < result.Count; i++)         {             int sum = 0;             result[i].ForEach(t =>             {                 //Console.Write($"{t} ");                 sum += t;             });             //Console.WriteLine($"sum={sum}");             if (sum > x)             {                 possibles++;             }         }         int g = GCD(all, possibles);         Console.WriteLine($"{possibles / g}/{all / g}");         Console.ReadKey();     }     static int GCD(int a, int b)     {         int i;         for (i = a; i > 0; i--)         {             if ((a % i == 0) && (b % i == 0)) break;         }         return i;     }     static void GetAllPossible(int n, int k, int x, ref Dictionary<int, int> state, ref List<List<int>> result)     {         k--;         //n为骰子数量         //k为当前骰子序号         //i为当前骰子点数         if (k >= 0)         {             for (int i = 1; i <= 6; i++)             {                 state[k] = i;                 //Console.WriteLine($"第{n + 1}个骰子点数:{i}");                 //Console.WriteLine($"state[{k}]={state[k]}");                 if (k == 0)//结束一次深入                 {                     List<int> r = new List<int>();                     for (int j = 0; j < n; j++)                     {                         r.Add(state[j]);                     }                     result.Add(r);                 }                 GetAllPossible(n, k, x, ref state, ref result);             }         }     } } 第3题时间过了才完成,不知道对不对。。
点赞 评论

相关推荐

牛客网
牛客企业服务