C.和
模拟
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
using namespace std;
string function(string x,string y){
int flag = 0; //进位标志
string answer = y;
int current = 0;
for(int i = x.size() - 1; i >=0 ; --i){
current = (x[i] - '0') + (y[i] - '0') + flag;
if(current >= 2){
flag = 1;
answer[i] = current%2 + '0';
} else {
flag = 0;
answer[i] = current + '0';
}
}
if(flag == 1){
for(int i = answer.size()-1; i >= 0; --i){
current = (answer[i]-'0') + flag;
if(current >= 2){
flag = 1;
answer[i] = current%2 + '0';
} else {
flag = 0;
answer[i] = current + '0';
break;
}
}
}
return answer;
}
int main(){
int k;
string str;
cin >> k >> str;
string y;
string answer = "";
for(int i = 0; i < str.size(); i+=k){
y = str.substr(i,k);
answer = function(answer,y);
}
for(int i = 0; i < answer.size(); ++i){
answer[i] = ((answer[i] - '0') + 1 ) % 2 + '0';
}
cout << answer << endl;
return 0;
}