https://programmers.co.kr/learn/courses/30/lessons/17687

string tenConvertSomething(int num, int someThing) {
	string result = "";
	for (int i = 1; num > 0; i *= 10) {
		int temp = num % someThing;
		if (temp >= 10) {
			result.push_back(temp + '7');
		}
		else {
			result.push_back(temp + '0');
		}
		num /= someThing;
	}
	reverse(result.begin(), result.end());
	return result == "" ? "0" : result;
}

string solution(int n, int t, int m, int p) {
	string answer = "";
	vector<char> v;
	// 0 ~ 100
	int number = 0;
	int pCount = 1;
	int tubeIdx = p - 1;

	while (answer.size() < t) {
		string toString = tenConvertSomething(number, n);
		for (const auto& c : toString)
		{
			v.push_back(c);
		}			
		if (pCount == p) {
			answer.push_back(v[tubeIdx]);
		}

		number++;
		if (pCount == m) {
			pCount = 1;
			tubeIdx += m;
		}
		else pCount++;
	}

	return answer;
}