#include <stdio.h>
#include <array>
// decimal_repr_size() computes the number of digits in the decimal representation of the given value
constexpr int decimal_repr_size (int value)
{
return (value == 0) ? 0 : (1 + decimal_repr_size(value / 10));
}
// GenerateDecimal::gen is a recursive function for generating the decimal representation
template <int value, char... generated>
struct GenerateDecimal {
static constexpr std::array<char, decimal_repr_size(value) + sizeof...(generated) + 1> gen ()
{
return GenerateDecimal<value / 10, '0' + (value % 10), generated...>::gen();
}
};
template <char... generated>
struct GenerateDecimal<0, generated...> {
static constexpr std::array<char, sizeof...(generated) + 1> gen ()
{
return std::array<char, sizeof...(generated) + 1>{{generated..., '\0'}};
}
};
// generate_decimal generates the decimal representation of the given value and adds a null byte
static constexpr auto decimal_array = GenerateDecimal<1234567>::gen();
int main ()
{
printf("%s\n", decimal_array.data());
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojaW5jbHVkZSA8YXJyYXk+CgovLyBkZWNpbWFsX3JlcHJfc2l6ZSgpIGNvbXB1dGVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiB2YWx1ZQoKY29uc3RleHByIGludCBkZWNpbWFsX3JlcHJfc2l6ZSAoaW50IHZhbHVlKQp7CiAgICByZXR1cm4gKHZhbHVlID09IDApID8gMCA6ICgxICsgZGVjaW1hbF9yZXByX3NpemUodmFsdWUgLyAxMCkpOwp9CgovLyBHZW5lcmF0ZURlY2ltYWw6OmdlbiBpcyBhIHJlY3Vyc2l2ZSBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbgoKdGVtcGxhdGUgPGludCB2YWx1ZSwgY2hhci4uLiBnZW5lcmF0ZWQ+CnN0cnVjdCBHZW5lcmF0ZURlY2ltYWwgewogICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PGNoYXIsIGRlY2ltYWxfcmVwcl9zaXplKHZhbHVlKSArIHNpemVvZi4uLihnZW5lcmF0ZWQpICsgMT4gZ2VuICgpCiAgICB7CiAgICAgICAgcmV0dXJuIEdlbmVyYXRlRGVjaW1hbDx2YWx1ZSAvIDEwLCAnMCcgKyAodmFsdWUgJSAxMCksIGdlbmVyYXRlZC4uLj46OmdlbigpOwogICAgfQp9OwoKdGVtcGxhdGUgPGNoYXIuLi4gZ2VuZXJhdGVkPgpzdHJ1Y3QgR2VuZXJhdGVEZWNpbWFsPDAsIGdlbmVyYXRlZC4uLj4gewogICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PGNoYXIsIHNpemVvZi4uLihnZW5lcmF0ZWQpICsgMT4gZ2VuICgpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0ZDo6YXJyYXk8Y2hhciwgc2l6ZW9mLi4uKGdlbmVyYXRlZCkgKyAxPnt7Z2VuZXJhdGVkLi4uLCAnXDAnfX07CiAgICB9Cn07CgovLyBnZW5lcmF0ZV9kZWNpbWFsIGdlbmVyYXRlcyB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIGFkZHMgYSBudWxsIGJ5dGUKCnN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWNpbWFsX2FycmF5ID0gR2VuZXJhdGVEZWNpbWFsPDEyMzQ1Njc+OjpnZW4oKTsKCmludCBtYWluICgpCnsKICAgIHByaW50ZigiJXNcbiIsIGRlY2ltYWxfYXJyYXkuZGF0YSgpKTsKfQo=