結果
| 問題 |
No.3157 Nabeatsu
|
| コンテスト | |
| ユーザー |
PyonPyon
|
| 提出日時 | 2025-05-23 20:24:56 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 86 ms / 2,000 ms |
| コード長 | 1,584 bytes |
| コンパイル時間 | 5,566 ms |
| コンパイル使用メモリ | 333,888 KB |
| 実行使用メモリ | 12,924 KB |
| 最終ジャッジ日時 | 2025-05-23 20:25:08 |
| 合計ジャッジ時間 | 8,905 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 45 |
ソースコード
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
typedef long long ll;
typedef long double ld;
#define sz(c) ((ll)(c).size())
#define ALL(x) x.begin(),x.end()
#define LB(A,x) (ll)(lower_bound(ALL(A),x)-A.begin())
#define UB(A,x) (ll)(upper_bound(ALL(A),x)-A.begin())
#define BS(A,x) binary_search(ALL(A),x)
#define rep(i,a,b) for(int i=a;i<b;i++)
template<class T>bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; }
using vi = vector<int>;
using vvi = vector<vi>;
using li =vector<ll>;
using lli=vector<li>;
const long long mod=998244353;
int main(){
string s;cin>>s;
int n=sz(s);
vector<int>A(n);
int sum=0;
vi B;
rep(i,0,n){A[i]=s[i]-'0';if(A[i]==3)B.push_back(i);sum+=A[i];}
//rep(i,0,n)cout<<A[i]<<" ";
//cout<<endl;
if(sum%3!=0&&sz(B)==0){
cout<<s;return 0;
}
//for(auto v:B)cout<<v<<" a";
//cout<<endl;
//sz(B)!=0
if(sz(B)!=0){
ll sum2=0;
vi C(n);
bool ok=false;
rep(i,0,n){
if(B[0]==i){C[i]=2;ok=true;sum2+=2;}
else if(ok){C[i]=9;sum2+=9;}
else {C[i]=A[i];sum2+=A[i];}
}
//rep(i,0,n)cout<<C[i]<<" ";
//cout<<endl;
rep(i,0,n-1)cout<<C[i];
if(sum2%3==0)cout<<C[n-1]-1;
else if(sum2%3!=0)cout<<C[n-1];
return 0;
}
else {
//繰り下がりがない
if(A[n-1]!=0){
rep(i,0,n-1){cout<<A[i];}
if(A[n-1]==4)cout<<2;
else cout<<A[n-1]-1;
return 0;
}
else {
int i=n-1;
while(i>=0&&A[i]==0){A[i]=9;i--;}
A[i]--;
if(A[i]==3)A[i]=2;
rep(i,0,n)cout<<A[i];
}
}
}
PyonPyon