這個題目要求每個亂數範圍內的數字若只出現一次,就是好的選擇。我直接想到用陣列來存放每個數字出現的次數,但是陣列要大到100000這麼大,使用C語言時,這就不是個好的辦法。後來我用了土方法,全部亂數產生一次(100000個對電腦來說,一下子就做完了),所有數字加總的結果與公式做比對(公式就是上底加下底乘高除二),不相等就是Bad choice。這個做法上傳ACM裁判系統後,也過關了。
重點C語言程式碼如下:
for (i=0;i<mod-1;i++)
{
seed = (seed+step)%mod;
sum += (double)seed;
}
if (((double)mod-1)*mod/2.0!=sum)
isBad = 1;
程式設計比賽題目二p408題目連結回ACM題庫目錄回首頁
沒有留言:
張貼留言