题目:k-rounding
题目链接:https://vjudge.net/contest/351853#problem/A
题目描述:
对给出的整数n,找到其末尾至少含K个0的最小倍数。
题目分析:
先找到最容易找到的倍数————n后面加k个0,然后对n缩小,使新组合的数可以整除原本的n。如果n中含有10.5.2这三个因子时可以对n进行缩小,并代替一个0。贪心地,我们按10.5.2进行缩小,直到0个数够k个。
打码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n,k,d=0;
scanf("%d%d",&n,&k);
if(d==k) goto loop; //如果0够了就可输出了
while(n%10==0) //找10因子
{
d++;
n/=10;
if(d==k) goto loop;
}
while(n%5==0) //找5因子
{
d++;
n/=5;
if(d==k) goto loop;
}
while(n%2==0) //找2因子
{
d++;
n/=2;
if(d==k) goto loop;
}
loop:
printf("%d",n);
for(i=0;i<k;i++) printf("0");
printf("\n");
return 0;
}