#include <iostream>
int main() {
// number - число, n - нужный разряд, size - сколько всех разрядов
int number, n, size = 0;
// считываем число, затем нужный разряд
std::cin >> number >> n;
while (number > 0) {
number /= 10;
// С каждым уменьшением числа в десять раз
// увеличиваем счетчик всех разрядов на один
++size;
}
// возводим 10 в степень нужного разряда по порядку
// и сразу печатаем результат
std::cout << std::pow(10, (size - n));
}
#include <iostream>
#include <memory>
using namespace std;
struct Base {
virtual void Action() = 0;
};
struct A: public Base {
virtual void Action() override { cout<< 'A'; }
}
struct B: public Base {
virtual void Action() override { cout<< 'B'; }
}
int main() {
// Используем общий интерфейс для разных наследников
unique_ptr<Base> ptr = make_unique<A>();
ptr->Action(); // A
ptr = make_unique<B>();
ptr->Action(); // B
}
namespace Typification
{
// Универсальный тип
struct Type
{
std::string Id;
std::function<void(void *)> Free;
std::function<void *(void *)> Copy;
std::function<bool(void *, void *)> Equall;
};
// Шаблонная функция возвращает тип
template <typename T> Type GetType()
{
return
{
typeid(T).name(),
[](void *pointer) -> void { delete static_cast<T *>(pointer); },
[](void *pointer) -> void *{ return new T(*static_cast<T *>(pointer)); },
[](void *a, void *b) -> bool { return *static_cast<T *>(a) == *static_cast<T *>(b); }
};
}
}
// Просто набросок идеи
struct Obj {
Typification::Type _type;
void *_value;
};