题意:给你个x,k次操作,对于第i次操作是:要找个nx,使得nx是>=x的最小值,且能整除i,求k次操作后的数
分析:
经过打表找规律,会发现最后的x/i,这个倍数会趋于一个固定的值,求出这个固定的值和K相乘就可以了,
为什么会趋于固定的值呢,因为最后虽然i在不断增长,但是x也是在增长的,每次的倍数会回退一个发现
有余数,然后再加上一个,所以趋于稳定。
官方题解:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#define LL __int64
using namespace std; int main()
{
LL x, k, i, pre, tmp;
int ca = ;
while(~scanf("%I64d%I64d", &x, &k))
{
if(x== && k==) break;
pre = x/;
for(i = ; i <= k; i++)
{
tmp = x/i;
if(x%i==)
{
pre = tmp;
continue;
}
x = (tmp+)*i;
if(pre == tmp+) // 和之前的相同
break;
pre = tmp+;
} printf("Case #%d: ", ca++);
printf("%I64d\n", pre*k);
}
return ;
}