UnKoder06に参加。
AでFirst Acceptedを取るなどなかなか順調でした。
https://www.hackerrank.com/contests/unkoder-06/challenges/tetraphobia
問題
正整数Nが与えられる。
N以下の整数のうち、(10進数で)どの桁にも4を含まない最大の整数を答えよ。
解法
上の桁から4を探し、見つけたらそれ以降を39999...で置き換えればよい。
整数型よりstringで入力を受けた方がラク。
void solve() { int i,j,k,l,r,x,y; string s; cin>>s; FOR(i,s.size()) if(s[i]=='4') { s[i++]='3'; for(;i<s.size();i++) s[i]='9'; } cout<<s<<endl; }
まとめ
一瞬桁DPかと思ったけど、ずっとシンプルだった。