結果
| 問題 |
No.3157 Nabeatsu
|
| コンテスト | |
| ユーザー |
橋本ヒデヒコ
|
| 提出日時 | 2025-07-08 22:46:40 |
| 言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 96 ms / 2,000 ms |
| コード長 | 2,027 bytes |
| コンパイル時間 | 1,255 ms |
| コンパイル使用メモリ | 146,656 KB |
| 実行使用メモリ | 14,820 KB |
| 最終ジャッジ日時 | 2025-07-08 22:46:47 |
| 合計ジャッジ時間 | 4,927 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 45 |
ソースコード
#include <iostream>
#include <iomanip>
#include <vector>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <algorithm>
#include <cmath>
#include <iterator>
using namespace std;
using i64 = int64_t;
template<class T>
using VV = vector<vector<T>>;
#define REP(i, n) for(i64 i = 0; i < i64(n); i++)
#define REP1(i, n) for(i64 i = 1; i <= i64(n); i++)
i64 INF = 100100100100100L;
i64 direct[8][2] = {
{1, 0}, {0, -1}, {-1, 0}, {0, 1},
{1, -1}, {-1, -1}, {-1, 1}, {1, 1}
};
template<class T, class S>
ostream &operator<<(ostream &os, pair<T, S> p);
template<class T>
ostream &operator<<(ostream &os, const vector<T> &v)
{
for(i64 i = 0; i < i64(v.size()); i++) {
if (i > 0) os << ' ';
os << v[i];
}
return os;
}
template<class T>
ostream &operator<<(ostream &os, const set<T> &st)
{
bool first = true;
for(const T &it: st)
if (first) {
first = false;
os << it;
} else{
os << ' ' << it;
}
return os;
}
template<class T, class S>
ostream &operator<<(ostream &os, map<T, S> &mp)
{
bool first = true;
for(const auto &[f, l]: mp)
if (first) {
first = false;
os << '{' << f << "-> " << l << '}';
} else{
os << ", {" << f << "-> " << l << '}';
}
return os;
}
template<class T, class S>
ostream &operator<<(ostream &os, pair<T, S> p)
{
os << '{' << p.first << ", " << p.second << '}';
return os;
}
int main()
{
string N;
cin >> N;
vector<i64> a;
for(char ch: N)
a.push_back(ch - '0');
bool baka = false;
for(i64 i = 0; i < i64(a.size()); i++) {
if (baka) {
a[i] = 9;
continue;
}
if (a[i] == 3) {
a[i] = 2;
baka = true;
continue;
}
}
i64 sum = 0;
for(i64 it: a)
sum += it;
if (sum % 3 == 0) {
i64 p = a.size() - 1;
while (true) {
if (a[p] == 0) {
a[p] = 9;
p--;
continue;
}
a[p]--;
if (a[p] == 3)
a[p]--;
break;
}
}
for(i64 it: a)
cout << it;
cout << endl;
return 0;
}
橋本ヒデヒコ