2008年5月22日 星期四

Problem 408 Uniform Generator,平均隨機亂數產生器

這個題目要求每個亂數範圍內的數字若只出現一次,就是好的選擇。我直接想到用陣列來存放每個數字出現的次數,但是陣列要大到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題庫目錄
回首頁

沒有留言: