1. 將數值調整:
if (m < n)2. 先將時間 t 都分配到時間少的漢堡,順便紀錄剩餘時間:
{
tmp = n;
n = m;
m = tmp;
}
eatNum = t / n;3. 若有剩餘時間,則把時間試著累加 n,看看是否能整除 m,或者縮短剩餘時間,如果兩種情況發生一種,就把時間退還,再把這些時間分配到時間多的漢堡:
t %= n;
recordT = t;
if (t)4. 最後,印出、上傳、等 AC:
{
for (i = 1; i <= eatNum; i ++)
{
if ((t + i*n) % m == 0)
{
t += i*n;
eatNum -= i;
break;
}
if ((t + i*n) % m < recordT)
{
recordI = i;
recordT = (t + i*n) % m;
}
}
if (recordI && t % m ) t += recordI * n, eatNum -= recordI;
eatNum += t / m;
t %= m;
}
printf("%d", eatNum);
if (t) printf(" %d", t);
printf("\n");
By David.K
p10465題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言