题目链接:HDU 4952 Number Transformation
进行K次操作,第i次操作是把X变成不小于X的最大整数,并且X是i的倍数。经过K次操作后就X的值。
红果果的暴力是会超时的。暴力打表发现在12000之后出现规律。之后的两两之间差恒定了。
AC代码:
#include<stdio.h>
#define ll __int64
const ll maxn=120000;
int main()
{
ll i;
ll x,k;
int cas=1;
while(scanf("%I64d %I64d",&x,&k)!=EOF)
{
if(x==0 && k==0)
break;
printf("Case #%d: ",cas++);
if(k<=maxn)
{
for(i=1;i<=k;i++)
if(x%i!=0) x=i*(x/i+1);
printf("%I64d\n",x);
}
else
{
ll y;
for(i=1;i<=maxn;i++)
if(x%i!=0) x=i*(x/i+1);
y=i*(x/i+1);
printf("%I64d\n",x+(k-maxn)*(y-x));
}
}
return 0;
}