結果
問題 |
No.3157 Nabeatsu
|
ユーザー |
![]() |
提出日時 | 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]; } } }