提出 #55609926
ソースコード 拡げる
#include <bits/stdc++.h>
#include <atcoder/modint>
#include <boost/multiprecision/cpp_int.hpp>
namespace {
using ModInt [[maybe_unused]] = atcoder::modint998244353;
using Num [[maybe_unused]] = long long int;
using Vec [[maybe_unused]] = std::vector<Num>;
using Set [[maybe_unused]] = std::set<Num>;
using Mset [[maybe_unused]] = std::multiset<Num>;
using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;
template<typename T>
using Q [[maybe_unused]] = std::queue<T>;
template<typename T>
using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
const std::vector<std::pair<Num, Num>> dyxs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
template<typename T>
void print_oneline(const std::vector<T>& vec, std::ostream& os) {
const auto size = vec.size();
for(size_t i{0}; i<size; ++i) {
os << vec.at(i) << (((i+1) == size) ? '\n' : ' ');
}
}
template<typename T>
void print_each(const std::vector<T>& vec, std::ostream& os) {
const auto size = vec.size();
for(size_t i{0}; i<size; ++i) {
os << vec.at(i) << '\n';
}
}
}
template <typename T=__int128>
Num power(Num base, Num index, Num mod) {
const Num x = base % mod;
if (x == 0) {
return 0;
}
if (x == 1) {
return 1;
}
T acc {1};
T doubled = x;
auto i = index;
while(i > 0) {
if ((i & 1) != 0) {
acc *= doubled;
acc %= mod;
}
doubled *= doubled;
doubled %= mod;
i /= 2;
}
return static_cast<Num>(acc);
}
void solve(std::istream& is, std::ostream& os) {
Num t {0};
is >> t;
while(t-- > 0) {
Num n,m,k;
is >> n >> m >> k;
if ((k + 1) == m) {
if (n >= k) {
os << "0\n";
} else {
os << power(2, n, 10) << "\n";
}
} else {
const Num w = m - k;
if (n >= m) {
const Num r = (n - (m - 1) + w - 1) / w;
n -= r * w;
}
os << power(2, n, 10) << "\n";
}
}
}
int main(void) {
solve(std::cin, std::cout);
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | B - Simple Math 4 |
| ユーザ | zettsut |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 400 |
| コード長 | 2363 Byte |
| 結果 | AC |
| 実行時間 | 331 ms |
| メモリ | 3580 KiB |
ジャッジ結果
| セット名 | Sample | All | after_contest | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 400 / 400 | 0 / 0 | ||||||
| 結果 |
|
|
|
| セット名 | テストケース |
|---|---|
| Sample | example_00.txt |
| All | example_00.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt |
| after_contest | after_contest_00.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| after_contest_00.txt | AC | 331 ms | 3416 KiB |
| example_00.txt | AC | 1 ms | 3512 KiB |
| test_00.txt | AC | 310 ms | 3508 KiB |
| test_01.txt | AC | 309 ms | 3512 KiB |
| test_02.txt | AC | 310 ms | 3464 KiB |
| test_03.txt | AC | 168 ms | 3476 KiB |
| test_04.txt | AC | 169 ms | 3580 KiB |
| test_05.txt | AC | 167 ms | 3508 KiB |
| test_06.txt | AC | 263 ms | 3536 KiB |
| test_07.txt | AC | 264 ms | 3412 KiB |