0
已解决
3819 好玩的数字对折经验值:1200
题目描述 Description
小明在玩过序列对折后,突发奇想,决定自己设计一个数字对折游戏。
对输入的一个整数n,将整数n的从中间对折,方向从左到右,对折后相同位置上的数字会累加到一起。
他想知道对折m次后的整数的样子。
输入描述 Input Description
输入一个整数n,n不超过100,000位,和对折次数m(m<=100)
输出描述 Output Description
输出对折m次后的整数
样例输入 Sample Input
56789 2
样例输出 Sample Output
4211
数据范围及提示 Data Size & Hint
56789第一次折叠后是71414,再一次折叠是4211。
每次折叠后的数字应该是不以0开头的整数
在下无能为力!!!!!!
请各位大佬给出思路!!!
最好是主要代码!!!
1
已采纳
/*
总共处理m次
1.遍历 该字符串
左边折向右边
对于位数是奇数还是偶数 用标志odd处理 奇数的情况ans先存x[n/2]这一位
对应位相加,看到的结果用字符串y存储
对应位相加的结果先用整数存储tmp
在吧整数tmp==0的情况 y不能为空串
字符串连接,最终得到的结果正着存,存到字符串ans
ans首位连续的0要删去
*/
and
核心
string f(string x){
string ans="";
int odd=0,n=x.size();
if(n%2){
odd=1;
ans+=x[n/2];
}
for(int i=n/2+odd;i<n;i++){
string y="";
int tmp=x[i]+x[n-1-i]-'0'-'0';
if(tmp==0){
y="0";
}
else{
while(tmp){
y=char(tmp%10+'0')+y;
tmp/=10;
}
}
ans=ans+y;
}
while(ans[0]=='0'){
ans.erase(0,1);
}
return ans;
}