給定 10 位 DNA 規則表(值 0-3),初始 40 格狀態(中央為 1,其餘 0)。每步根據左右鄰居與自身值之和作為 DNA 索引更新。模擬 50 步並輸出圖形(空格/./x/W 對應 0/1/2/3)。多測試用例。
fread/fwrite)。last 保存左鄰舊值。void bacterialColonies(char *dishes) {
for (int r = 1; r < 50; ++r) {
int last = 0;
for (int i = 0; i < 40; ++i) {
int k = cToInt(dishes[i]);
int cur = k;
if (i == 0) k += cToInt(dishes[i+1]);
else if (i == 39) k += last;
else k += last + cToInt(dishes[i+1]);
last = DNA[k];
dishes[i] = iToChar(last);
last = cur;
}
wrToBuf(dishes);
}
}
intFromBuf 直接解析整數,避免 scanf 開銷。fwrite。O(T × 50 × 40),常數極小,0.015s 通過。O(1)。本題計算量小,核心在於 IO 優化與狀態轉移的無分支實現。展示了競技編程中「快速 IO + 緊湊循環」的實戰技巧。