View Code of Problem 3910

#include<iostream>
#include<string>
using namespace std;

string buma(string s) {
	string temp;
	temp = s.substr(1, s.length() - 1);
	if (s[0] == '0') {
		while (temp[0] == '0') {
			temp.erase(0, 1);
		}
	}
	else {
		for (int i = 0;i < temp.length();i++) {
			if (temp[i] == '1') {
				temp[i] = '0';
			}
			else {
				temp[i] = '1';
			}
		}
		int flag = 1;
		for (int i = temp.length() - 1;i >= 0;i--) {
			if (flag) {
				temp[i] += flag;
				if (temp[i] == '2') {
					temp[i] = '0';
				}
				else {
					flag = 0;
				}
			}
			else {
				break;
			}
		}
		if (flag) {
			temp = s;
			temp.insert(0, "-");
		}
		else {
			while (temp[0] == '0') {
				temp.erase(0, 1);
			}
			if (temp[0] != NULL) {
				temp.insert(0, "-");
			}
		}
	}
	if (temp[0] == NULL) {
		temp += '0';
	}
	return temp;
}

string yuanma(string s) {
	string temp;
	temp = s.substr(1, s.length() - 1);
	while (temp[0] == '0') {
		temp.erase(0, 1);
	}
	if (s[0] == '1'&&temp[0] != NULL) {
		temp.insert(0, "-");
	}
	if (temp[0] == NULL) {
		temp += '0';
	}
	return temp;
}

int main() {
	int t;
	cin >> t;
	while (t--) {
		int n, k;
		cin >> n >> k;
		string s;
		cin >> s;
		string temp;
		if (k) {
			temp = buma(s);
		}
		else {
			temp = yuanma(s);
		}
		cout << temp << endl;
	}
}

Double click to view unformatted code.


Back to problem 3910