View Code of Problem 99

#include <iostream>
#include <string>
using namespace std;
int parseInt(char a) {
	return a - '0';
}
int parseInt(char a, char b) {
	int result = (a - '0') * 10 + (b - '0');
	return result;
}
void print1(int start, int end, int step) {
	cout << start;
	for (int i = start + step+1; i <= end; i += step + 1) {
			cout << ' ' << i;
	}
	cout << endl;
}
void print2(int start, int end, int step) {
	cout << start;
	for (int i = start - step-1; i >= end; i -= step + 1) {
			cout << ' ' << i;
	}
	cout << endl;
}
int main() {
	string s;
	while (1) {
		int num[3] = { 0 };
		getline(cin, s);
		if (s.size() < 3) {
			int a;
			if (s.size() == 1) a = parseInt(s[0]);
			else a = parseInt(s[0], s[1]);
			if (a == 0) break;
			print1(1, a, 0);
		}
		else {
			int len = 0, idx;
			int k = 0;
			for (int i = 0; i < s.size(); ++i) {
				if (s[i] == ' ') {
					idx = i;
					if (len == 1) num[k++] = parseInt(s[i - 1]);
					else num[k++] = parseInt(s[i - 2], s[i - 1]);
					len = 0;
				}
				else
					len++;
			}
			s = s.substr(idx + 1, s.size() - idx);
			if (s.size() == 1) num[k] = parseInt(s[0]);
			else num[k] = parseInt(s[0], s[1]);
			if (k + 1 == 2) {
				if (num[0] < num[1]) {
					print1(num[0], num[1], 0);
				}
				else {
					print2(num[0], num[1], 0);
				}
			}
			else {
				if (num[0] < num[1]) {
					print1(num[0], num[1], num[2]);
				}
				else
					print2(num[0], num[1], num[2]);
			}


		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 99