L.SW和ZK的恋爱
时间限制: C/C++ 1000ms; Java 2000ms 内存限制: 65535KB
问题描述
SW和ZK是一对令人羡慕的神仙眷侣,他们之间总是充满着甜蜜如初恋的感觉。当然,再幸福的恋爱,也难免少不了磕磕绊绊,吵闹是青春朦胧情感的调味剂。在他们恋爱的第1314天,SW买了一个蛋糕,他深情对ZK说:“I LOVE YOU 1314 !”,ZK十分感动,却又开始了自怜自艾,ZK说:“你永远想象不到我有多么爱你,比你爱我还有多3000倍!”。SW立刻就不乐意了,觉得自己的爱要更多一点。直男的脾气来了,SW说:“我爱你是你爱我的 N 倍!”ZK立刻回击:“我的爱是你的 N + 1 倍!”SW又说:“我的爱是你的 N 倍后面至少还有 K 个 0 !”ZK说:“亲爱的,你真好 !”
可是问题来了,假设ZK的爱是一个整数 N,那么最小的正整数是 N 的倍数且至少以 K 个 0 结尾的这个数是多少?
输入描述
包含一行输入两个整数 N(1 <= N <= 1000000000),K(0 <= K <= 8)。
输出描述
输出包含一个正整数,表示答案。
样例输入
10 1 10 2
样例输出
10 100
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int rt1(ll n){//末尾0的个数
int id,cnt=0;
ll n1;
id=n%10;
if(id==0){
cnt+=1;
n1=n/10;
while(n1){
if(n1%10==0){
cnt+=1;
n1/=10;
}else
{
break;
}
}
}
return cnt;
}
int rt2(ll n){//末尾第一个非零数的位置
int id;
id=n%10;
ll n1;
if(id==0){
n1=n/10;
while(n1){
id=n1%10;
if(id==0){
n1/=10;
}else
{
break;
}
}
}
return id;
}
int mul(int n){
if(n==1||n==3||n==7||n==9)return 10;
else if(n==5)return 2;
else return 5;
}
int main(){
ll n,k;
cin>>n>>k;
int sum0=rt1(n);
if(sum0>=k)cout<<n<<endl;
else{
while(rt1(n)<k){
int kk=rt2(n);
n=mul(kk)*n;
}
cout<<n<<endl;
}
return 0;
}