📄 1156.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1156 on 2005-11-06 at 19:19:22 */
#include <cstdio>
#include <cmath>
const double eps = 1e-8;
int main()
{
long long n, m, h, num;
int i, r;
long long k, t, x, y;
while(scanf("%lld %lld", &n, &m) == 2) {
if(n == 0 && m == 0) {
return 0;
} else if(n == 1 && m == 1) {
printf("0 1\n");
} else {
r = 1;
k = n;
t = m;
for(i = 1; ; i++) {
x = (long long)(pow(k, (double)1/i) + eps);
y = (long long)(pow(t, (double)1/i) + eps);
if(fabs(pow(x, i)-k) < eps && fabs(pow(y, i)-t) < eps) {
r *= i;
k = x;
t = y;
if(i != 1) {
i--;
}
if(k - t == 1) {
break;
}
}
}
num = 0;
x = 1;
y = n;
h = m;
for(i = 0; i < r; i++) {
if(i != 0) {
x *= t;
y /= k;
}
num += x;
h += x * y;
}
printf("%lld %lld\n", num, h);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -