链接
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1614
题解
当
k
∣
x
k|x
k∣x时,可以直接输出
p
=
k
,
q
=
0
p=k,q=0
p=k,q=0
当
k
̸
∣
x
k\not | x
k̸∣x时,
⌈
x
k
⌉
=
⌊
x
k
⌋
+
1
\lceil\frac{x}{k}\rceil=\lfloor\frac{x}{k}\rfloor+1
⌈kx⌉=⌊kx⌋+1
所以
x
=
(
p
+
q
)
⌊
x
k
⌋
+
q
x=(p+q)\lfloor\frac{x}{k}\rfloor+q
x=(p+q)⌊kx⌋+q
因为
x
=
k
⌊
x
k
⌋
+
(
x
m
o
d
  
k
)
x=k\lfloor\frac{x}{k}\rfloor+(x\mod k)
x=k⌊kx⌋+(xmodk)
所以可以直接令
q
=
x
m
o
d
  
k
,
p
=
k
−
q
q=x\mod k,p=k-q
q=xmodk,p=k−q即可
代码
//数学休闲题
#include <bits/stdc++.h>
#define ll long long
int main()
{
ll N, K, T;
scanf("%lld",&T);
while(T--)scanf("%lld%lld",&N,&K), printf("%lld %lld\n",K-N%K,N%K);
return 0;
}
本文介绍了一种解决特定数学问题的算法,当输入的整数x不能被整数k整除时,通过比例分解的方法找到两个整数p和q,使得x等于(p+q)乘以x/k的下取整加上q。文章提供了详细的解析过程和C++实现代码。
1972

被折叠的 条评论
为什么被折叠?



