1. 程式人生 > >騰訊模擬筆試歌單問題

騰訊模擬筆試歌單問題

騰訊2018年8月31日模擬筆試的題目,這道題在網易還是貝殼的筆試上看到過,總的來說難度不大,下面是題目

這裡寫圖片描述

這裡寫圖片描述

一下是C#程式碼

using System;
using System.Collections.Generic;

namespace musicList
{
    class Program
    {
        static void Main(string[] args)
        {
            //讀取輸入
            int target = int.Parse(Console.ReadLine());
            int
[] detail = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse); int Alen = detail[0], Anum = detail[1], Blen = detail[2], Bnum = detail[3]; List<List<int>> lstCls = new List<List<int>>(); // 尋找組合方式 for (int i = 0; i <= Anum; i++) { List<int
> lstTmp = new List<int>(); for (int j = 0; j <= Bnum; j++) { if (i * Alen + j * Blen == target) { lstTmp.Add(i); lstTmp.Add(j); } } if (lstTmp.Count != 0
) { lstCls.Add(lstTmp); } } //解決一個兩個排列問題,將每次的兩個排列結果相乘,最後結果相加 int result = 0; int SumA = 1, SumB = 1; for (int i = 1; i <= Anum; i++) { SumA *= i; } for (int i = 1; i <= Bnum; i++) { SumB *= i; } for (int i = 0; i < lstCls.Count; i++) { int Sum1 = 1, Sum2 = 1; for (int k = 1; k <= Anum-lstCls[i][0]; k++) { Sum1 *= k; } for (int k = 1; k <= Bnum- lstCls[i][1]; k++) { Sum2 *= k; } result += SumA / Sum1 * SumB / Sum2; } Console.WriteLine(result); Console.ReadLine(); } } }