這是一個工作申請的問題: 「父親有兩個兒子和999幅繪畫,每幅畫都有不同的價值:第一個是價值1,第二個是價值2等等,直到最後的繪畫價值999.他想把他所有的繪畫分給他的兩個兒子,這樣每個兒子都能得到同樣的價值。有999種繪畫可以用多少種方式來做? 例子:如果父親有7幅繪畫,他可以通過給予第一個兒子的繪畫1,6和7來公平地分配他們。第二個兒子將得到2,3,4和5.兩者總和等於14。如果有7個繪畫,父親可以將其分爲4種方式(其他3種不在這裏列出),因此解決方案爲4. 提示:數字可能很大,因此請向我們發送解決方案的最後10位數字和草圖。「父親,兩個兒子,999幅繪畫
我所做的就是嘗試使用蠻力的方法,通過寫這寫它與環內環路自己的C#程序,像這樣的一個C#程序追加了所有可能的組合:
StringBuilder sb = new StringBuilder();
for (short i = 2; i <= 999; i++) //starts from 2 because 1 is always added to the total for one side
{
sb.AppendLine("for (byte i" + i.ToString() + " = 0; i" + i.ToString() + " < 2; i" + i.ToString() + "++)");
sb.AppendLine("{");
}
for (int i = 2; i <= 999; i++)
{
sb.Append("if (i" + i.ToString() + " == 1) { total += " + i.ToString() + "; }\n");
}
for (short i = 2; i <= 999; i++)
{
sb.AppendLine("}");
}
然後在結果中,如果塊之後添加此:
if (total == 249750)
{
count++; //count is a BigInteger
}
total = 1;
這種做法應該在技術上的工作(如在畫一個小數目測試),但問題是它是一個HUUUGE號,它會採取像一萬年或者在我的電腦上計算結果這樣...有一些數學技巧在合理的時間內做到這一點?
要問...你真的打算申請這份工作嗎?如果你不能通過最初的面試問題而沒有進入SO,你確定這是你真正想要/準備好的工作嗎? – 2014-10-02 01:05:26
地獄沒有,這是我的聯盟的方式:D 目前,至少... – infamous 2014-10-02 01:08:43
是的我明白,我不問,所以我可以欺騙面試,我問,所以我可以學習新的東西並希望爲我的技能組添加新內容。 我發佈了這個鏈接,以防萬一能夠解決的人可以申請,如果他想要並且符合要求。 (它被mod編輯出來,顯然這違反了規則) – infamous 2014-10-02 01:13:59