竞赛计数法

在竞赛中我们常常会遇到一些非常大的数字,比如说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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kinkinpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值