1 条题解

  • 0
    @ 2044-6-6 13:20:16

    练8.5 幸运数

    解题思路

    最大倍数为 floor(N/K)×K,直接用整数商再乘回 K。

    正确性说明

    令 q=floor(N/K),则 qK≤N 而 (q+1)K>N,因此 qK 是不超过 N 的最大倍数。

    易错点

    N<K 时答案是 0,0 也属于非负整数。

    复杂度

    本题规模固定,时间 O(1),额外空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long n, k;
        cin >> n >> k;
        cout << n / k * k << "\n";
        return 0;
    }
    
    • 1