标签:io for amp on return hdu c print
已知n,k,操作k次,每次操作求大于n且能被次数i整除的最小的数
已知x*i,所以(i+1)*y>=x*i,y>=x-[x/(i+1)],当x<i+1时,y的值不再改变,直接break,输出y*k即可(x,y都是倍数)
#include <stdio.h> int main() { long long n,k; long long i; int time=0; while(scanf("%I64d%I64d",&n,&k)!=-1) { if(n==0&&k==0) break; time++; for(i=2;i<=k;i++) //从2开始,应为n就是i=1时的倍数 { n=n-n/i; if(n<i) //n<i+1 break; } printf("Case #%d: %I64d\n",time,n*k); } return 0; }
数论 Number Transformation HDU4952,布布扣,bubuko.com
数论 Number Transformation HDU4952
标签:io for amp on return hdu c print
原文地址:http://blog.csdn.net/trq1995/article/details/38613389