洛谷八月月赛Number

**题目:
生活中我们会碰到一些特殊数字,这些数字使用一些特殊表达方式后会方便记忆和使用。比如说,10^9+7=1000000007
就非常常见——它相比于 1000000007,更方便选手看清数字而不必数 0,而且没有科学计数法的精度损失。

你现在有一个形如 10^k+x,的数字,请还原成一般写法。
输入:一行两个整数 k,x
**输出:**一行一个整数表示 10^k+x
例如:输入
9 7
输出
1000000007

#include <iostream>
#include <cstring>
#include <string> 
using namespace std;
int main(){
	int k;
	char x[520];
	int a[520];
	cin>>k>>x;
	int len=strlen(x);
	
	if(k==0){
		for(int i=0; i<len; i++){
			a[i]=x[i]-'0';
		}
		for(int i=0; i<len; i++){
			if(a[len-1]+1>9){
				for(int i=0; i<len; i++){
					a[i+1]+=a[i]/10;
					a[i]%=10;
					if(a[i+1]<=9)	break;
				}
			}
			else{
				a[len-1]+=1;break;
			}
		}
		for(int i=0; i<len; i++)	cout<<a[i];
	}
	else if(k>len){
		cout<<1;
		for(int i=1; i<=k-len; i++)	cout<<0;
		for(int i=0; i<len; i++){
			a[i]=x[i]-'0';
			cout<<a[i];
		}
	}
	else if(k==len){
		cout<<1;
		for(int i=0; i<len; i++)	a[i]=x[i]-'0';
		for(int i=0; i<len; i++)	cout<<a[i];
	}
	else if(k<len){
		for(int i=0; i<len; i++)	a[i]=x[i]-'0';
		a[len-k-1]+=1;
		if(a[len-k-1]>9){
			for(int i=len-k-1; i>0; i--){
				a[i-1]+=a[i]/10;
				a[i]%=10;
			}
		}
		for(int i=0; i<len; i++)	cout<<a[i];
	}
} 

其实总的来说代码还是很好理解的,就是分析题目的时候各种方面都要考虑细致,不能遗漏,所以情况都是细分的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值