**题目:
生活中我们会碰到一些特殊数字,这些数字使用一些特殊表达方式后会方便记忆和使用。比如说,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];
}
}
其实总的来说代码还是很好理解的,就是分析题目的时候各种方面都要考虑细致,不能遗漏,所以情况都是细分的。