結果
問題 | No.782 マイナス進数 |
ユーザー |
|
提出日時 | 2019-01-11 22:04:05 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 48 ms / 2,000 ms |
コード長 | 1,429 bytes |
コンパイル時間 | 2,000 ms |
コンパイル使用メモリ | 196,852 KB |
最終ジャッジ日時 | 2025-01-06 20:19:44 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 36 |
ソースコード
#include <bits/stdc++.h>#define show(x) std::cerr << #x << " = " << (x) << std::endlusing ll = long long;using ld = long double;constexpr ll MOD = 1000000007LL;template <typename T>constexpr T INF() { return std::numeric_limits<T>::max() / 16; }std::mt19937 mt{std::random_device{}()};int main(){ll T, B;std::cin >> T >> B;B = -B;for (int i = 0; i < T; i++) {ll N;std::cin >> N;if (N == 0) {std::cout << 0 << std::endl;continue;}std::vector<int> dig;for (; N > 0; N /= B) { dig.push_back(N % B); }for (int i = 1; i < dig.size(); i++) {if (i % 2 == 1) {if (dig[i] == 0) {} else {dig[i] = B - dig[i];if (i == dig.size() - 1) {dig.push_back(1);} else {dig[i + 1]++;}}if (dig[i + 1] == B) {dig[i + 1] = 0;if (i + 2 == dig.size()) {dig.push_back(1);} else {dig[i + 2]++;}}}}std::reverse(dig.begin(), dig.end());for (const int d : dig) { std::cout << d; }std::cout << std::endl;}return 0;}