0
已解决
陈振轩
高级光能
高级光能
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string s, str = "";
int m;
int main(){
cin >> s >> m;
for (int i = 0; i < s.size(); i ++) s[i] -= '0';
while(m --) {
int left = s.size() / 2 - 1, right = s.size() % 2 == 1 ? s.size() / 2 + 1 : s.size()/2; //1 2 4 5
if (s.size() % 2 == 1) str = s[left + 1];
while (left >= 0 && right < s.size()) {
char c = (s[left] + s[right]);
string x = "";
x += c;
str = str + x;
left --;
right ++;
}
// for (int i = 0; i < str.size(); i ++) {
// cout << int(str[i]);
// if (i != str.size() - 1) cout << ":";
// } cout << endl;
// int cnt = 0;
for (int i = 0; i < str.size(); i ++){
if (str[i] > 9){
char c = str[i] % 10; //4
str[i] = 1;
string snap = "";
snap += c;
str.insert(i + 1, snap);
//cout << int(c) << "\n";
//i ++;
// cnt ++;
}
}
s = str;
// cout << cnt << endl;
str = "";
}
for (int i = 0; i <= s.size()-1; i ++) cout << int(s[i]);
return 0;
}
蒟蒻错误代码↑
大佬求解qwq
0
已采纳
郑金顺
中级光能
中级光能
/*
总共处理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;
}
0