您的位置:首页 > 大数据 > 人工智能

Hdu4952 - Number Transformation - 数论(2014 Multi-University Training Contest 8)

2014-08-14 20:23 357 查看
寻找1~k内i的倍数,则这个数可以看成i*x,则下一个数为(i+1)*y,(i+1)*y>=i*x,那么可以推出,y=x-x/(i+1);

那么当x<i+1时,y==x,之后的循环也不会改变,就可以跳出。

#include<stdio.h>
__int64 x,y,k;
int main()
{
__int64 i;
int flag;
__int64 sum;
int cas=0;
while(scanf("%I64d%I64d",&x,&k)!=EOF)
{
sum=x;
flag=0;
if(x==0&&k==0)
{
break;
}
for(i=1;i<k;i++)
{
y=x-x/(i+1);
if(x==y)
{
sum=x*k;
break;
}
x=y;
sum=x*k;
}
printf("Case #%d: %I64d\n",++cas,sum);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: