2 条题解

  • 1
    @ 2025-3-29 16:46:31

    模拟长除法代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        long long N, K;
        cin >> N >> K;
        
        long long m = 0;
        long long power = 1;
        
        // 找到最大的power使得 K * power <= N
        while (power * K <= N) {
            power *= 2;
        }
        
        // 逐位检查每一位是否为1
        while (power > 0) {
            // 尝试将当前位设为1,并检查是否满足条件
            if (K * (m + power) <= N) {
                m += power; // 当前位可以设为1
            }
            power /= 2; // 处理下一位
        }
        
        cout << m * K << endl;
        return 0;
    }
    
    • 0
      @ 2025-9-9 13:32:02
      n,k=map(int,input().split())
      m=n//k
      print(m*k)
      
      • 1

      信息

      ID
      450
      时间
      1000ms
      内存
      64MiB
      难度
      6
      标签
      递交数
      108
      已通过
      37
      上传者