結果
問題 | No.897 compαctree |
ユーザー |
![]() |
提出日時 | 2019-10-04 21:24:19 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 4,421 bytes |
コンパイル時間 | 473 ms |
コンパイル使用メモリ | 69,616 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-03 07:08:09 |
合計ジャッジ時間 | 981 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 13 |
ソースコード
//#define NDEBUG#include <cstddef>#include <cstdint>#include <iostream>#include <iterator>#include <vector>namespace n91 {using i8 = std::int_fast8_t;using i32 = std::int_fast32_t;using i64 = std::int_fast64_t;using u8 = std::uint_fast8_t;using u32 = std::uint_fast32_t;using u64 = std::uint_fast64_t;using isize = std::ptrdiff_t;using usize = std::size_t;constexpr usize operator"" _z(unsigned long long x) noexcept {return static_cast<usize>(x);}template <class T> class integral_iterator {public:using difference_type = T;using value_type = T;using pointer = const value_type*;using reference = value_type;using iterator_category = std::random_access_iterator_tag;private:using self_type = integral_iterator<value_type>;value_type i;public:constexpr integral_iterator() noexcept : i() {}explicit constexpr integral_iterator(const value_type i) noexcept : i(i) {}constexpr self_type operator++(int) noexcept { return self_type(i++); }constexpr self_type operator--(int) noexcept { return self_type(i--); }constexpr self_type operator[](const difference_type rhs) const noexcept {return self_type(i + rhs);}constexpr self_type& operator++() noexcept {++i;return *this;}constexpr self_type& operator--() noexcept {--i;return *this;}constexpr reference operator*() const noexcept { return i; }constexpr self_type operator+(const difference_type rhs) const noexcept {return self_type(i + rhs);}constexpr self_type operator-(const difference_type rhs) const noexcept {return self_type(i - rhs);}constexpr difference_type operator-(const self_type rhs) const noexcept {return i - rhs.i;}constexpr bool operator<(const self_type rhs) const noexcept {return i < rhs.i;}constexpr bool operator<=(const self_type rhs) const noexcept {return i <= rhs.i;}constexpr bool operator>(const self_type rhs) const noexcept {return i > rhs.i;}constexpr bool operator>=(const self_type rhs) const noexcept {return i >= rhs.i;}constexpr bool operator==(const self_type rhs) const noexcept {return i == rhs.i;}constexpr bool operator!=(const self_type rhs) const noexcept {return i != rhs.i;}constexpr self_type& operator+=(const difference_type rhs) noexcept {i += rhs;return *this;}constexpr self_type& operator-=(const difference_type rhs) noexcept {i -= rhs;return *this;}};template <class T>constexpr integral_iterator<T> make_int_itr(const T i) noexcept {return integral_iterator<T>(i);}class rep {const usize f, l;public:constexpr rep(const usize f, const usize l) noexcept : f(f), l(l) {}constexpr auto begin() const noexcept { return make_int_itr(f); }constexpr auto end() const noexcept { return make_int_itr(l); }};class revrep {const usize f, l;public:revrep(const usize f, const usize l) noexcept : f(l), l(f) {}auto begin() const noexcept {return std::make_reverse_iterator(make_int_itr(f));}auto end() const noexcept {return std::make_reverse_iterator(make_int_itr(l));}};template <class T> auto md_vec(const usize n, const T& value) {return std::vector<T>(n, value);}template <class... Args> auto md_vec(const usize n, Args... args) {return std::vector<decltype(md_vec(args...))>(n, md_vec(args...));}template <class T> constexpr T difference(const T& a, const T& b) {return a < b ? b - a : a - b;}template <class T> T scan() {T ret;std::cin >> ret;return ret;}} // namespace n91#include <algorithm>#include <iostream>#include <utility>namespace n91 {void main_() {const usize q = scan<usize>();for (const auto i : rep(0_z, q)) {usize n = scan<usize>();const usize k = scan<usize>();if (k == 1_z) {std::cout << n - 1_z << std::endl;}else {usize cur = 1_z;n -= 1_z;usize c = 0_z;for (; n != 0_z; ++c) {cur *= k;n -= std::min(n, cur);}std::cout << c << std::endl;}}}} // namespace n91int main() {n91::main_();return 0;}