在竞赛中我们常常会遇到一些非常大的数字,比如说109+7,它相比于1000000007更方便选手看清楚数字而不必数 0.你现在有一个形如 10^k+x 的数字,请还原成一般写法。
输入描述
一行两个整数 k,x
0≤k≤100
0≤x≤5000
输出描述
一行一个整数表示 10k+x
用例输入 1
9 7
用例输出 1
1000000007
思路:当k的个数大于18时,则判断需要加上的数的位数,直接输出1,统计0的个数直接输出,否则就直接利用10^k + x输出。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ll k,x;
cin >> k >> x;
if(k <= 18) {
ll res = 1;
for(int i = 1;i <= k;i++)
res *= 10;
cout << res + x << endl;
}
else {
cout << 1;
ll x1 = x,digit = 0;//数位
//看加的是几位数
while(x1 > 0) {
digit++;
x1 /= 10;
}
for(int i = 1;i <= k - digit;i++)
cout << 0;
if(x != 0) {
cout << x << endl;//x为0的话不用再输出0
}
}
return 0;
}