题目描述:
For a given positive integer n denote its k-rounding as the minimum positive integer x, such that x ends with k or more zeros in base 10 and is divisible by n.
For example, 4-rounding of 375 is 375·80 = 30000. 30000 is the minimum integer such that it ends with 4 or more zeros and is divisible by 375.
Write a program that will perform the k-rounding of n.
Input
The only line contains two integers n and k (1 ≤ n ≤ 109, 0 ≤ k ≤ 8).
Output
Print the k-rounding of n.
Sample 1
Inputcopy | Outputcopy |
---|---|
375 4 | 30000 |
Sample 2
Inputcopy | Outputcopy |
---|---|
10000 1 | 10000 |
Sample 3
Inputcopy | Outputcopy |
---|---|
38101 0 | 38101 |
Sample 4
Inputcopy | Outputcopy |
---|---|
123456789 8 | 12345678900000000 |
思路:
要尽可能快的将题目给的数字乘出足够的0,可以根据最后一位数,由1到9乘什么数字可以得到被10整除的数,例如1乘10,2乘5,4乘5。
代码:
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
typedef double db;
int main() {
std::ios::sync_with_stdio(false);
ll n,k;
cin>>n>>k;
ll temp=n,cnt=0;
while(temp%10==0&&temp!=0){
cnt++;
temp/=10;
}
while(cnt<k){
int j=temp%10;
if(j%2==0){
temp*=5;
cnt++;
temp/=10;
}else if(j==5){
temp*=2;
cnt++;
temp/=10;
}else{
cnt++;
}
}
cout<<temp;
for(int i=1;i<=cnt;i++){
cout<<0;
}
}