1 条题解

  • 0
    @ 2025-6-14 18:37:18
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        int x, y, z;
        cin >> x >> y >> z;
    
        // adults 存储每月成虫数量,eggs 存储每月新产卵数量
        vector<long long> adults(z + 2, 0); 
        vector<long long> eggs(z + 2, 0);  
    
        adults[1] = 1;  // 初始第 1 个月,1 对成虫
    
        for (int month = 2; month <= z + 1; ++month) { 
            // 成虫 = 上月成虫 + 两个月前的卵(卵过 2 个月长成成虫)
            adults[month] = adults[month - 1] + eggs[month - 2]; 
            
            // 成虫过 x 个月后,当月会产卵(month - x >=1 表示满足产卵周期)
            if (month - x >= 1) { 
                eggs[month] = adults[month - x] * y; 
            }
        }
    
        // 过 z 个月后,对应第 z+1 个月的成虫数量
        cout << adults[z + 1] << endl; 
        return 0;
    }
    
    • 1

    信息

    ID
    318
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    5
    已通过
    4
    上传者