题目分析
题意:给两个数字(n)和(k),让你在(k)的倍数中,找出大于(n)的最小数字(x),即(n>x)
这道题很裸也很简单,答案就是(k imes (lfloor frac{n}{k}
floor +1))。这个动动脑子就能想明白
这里鄙人自己个给出了一个不太严谨的数学证明:
[ ext{设存在两个正整数A、B,其中}A>B \
ext{设存在正整数}n,使得A<n imes B恒成立,即n>frac{A}{B} \
已知exists sigma in [0,1),lfloor frac{A}{B}
floor +sigma=frac{A}{B}\
则lfloor frac{A}{B}
floor+1>lfloor frac{A}{B}
floor +sigma=frac{A}{B} \
故存在n=lfloor frac{A}{B}
floor+1使得n>frac{A}{B}恒成立
]
这里在留下一个简单的问题:如果这道题让你求(nge x)呢?
AC代码
#include <bits/stdc++.h>
#define io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define rT printf("
Time used = %.3lf
", (double)clock()/CLOCKS_PER_SEC)
using namespace std;
typedef long long ll;
ll n, k;
int main() {
io;
cin >> n >> k;
cout << k * (n / k + 1) << '
';
return 0;
}
上述问题答案:(k imes lceil frac{n}{k} ceil),代码实现略