結果
| 問題 |
No.3157 Nabeatsu
|
| コンテスト | |
| ユーザー |
srjywrdnprkt
|
| 提出日時 | 2025-07-25 18:54:58 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 8 ms / 2,000 ms |
| コード長 | 1,323 bytes |
| コンパイル時間 | 3,477 ms |
| コンパイル使用メモリ | 275,392 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-07-25 18:55:05 |
| 合計ジャッジ時間 | 7,230 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 45 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
string S;
cin >> S;
int N = S.size(), sm = 0;
bool f=0;
for (int i=0; i<N; i++){
if (S[i] == '3' && !f){
S[i] = '2';
f = 1;
}
else if (f){
S[i] = '9';
}
sm += S[i]-'0';
}
if (sm % 3 == 0){
/*
1桁目が0,4以外なら1を引くだけ
4なら2を引く。
1桁目が0なら
初めて0じゃないやつが出てきたらその桁から1を引く。
その桁が3になったらさらに1を引く。
1,2を引いても3の倍数にはならない。
*/
if (S[N-1] != '4' && S[N-1] != '0'){
S[N-1]--;
}
else if (S[N-1] == '4'){
S[N-1] = '2';
}
else{
for (int i=N-1; i>=0; i--){
if (S[i] == '0'){ //0を9にしても3の倍数のまま
S[i] = '9';
}
else{
if (S[i] == '4') S[i] = '2';
else S[i]--;
break;
}
}
}
}
cout << S << endl;
return 0;
}
srjywrdnprkt