' P '

whatever I will forget

C - Doubled

atcoder.jp

最悪なくらい難しく考えててWA

考えたこと

規則性の問題だと思ってその解き方をして結局解けず

11
22
33
...
99

N >100 => 9個

1010
1111
1212
...
1919 
...
9191
9292
9393
...
9999

9*10なので、 N>1000 => 9*10 => 90個

N>100000 => 9*10*10 => 900個...

なのでwhileでNを10で割ったり100で割ったりしていたけど、
1333の場合やちょうど割り切れる10000のような場合で答えが合わずに撃沈

解き方

クソ簡単で 結局ゾロ目になる場合ってのは1+1をStringに変換した場合
よって制限は1012なので、106までループさせて
Nを超えたところのカウンタに-1したものが答え。

愚直に数値=>文字列変換が思いつかなかったのが敗因。

package AtCoder.ABC196;
import java.util.Scanner;
public class MainC {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Long n = sc.nextLong();
        sc.close();
        for(int i = 0; ; i++) {
            if(Long.parseLong(String.valueOf(i) + String.valueOf(i)) > n) {
                System.out.println(i-1);
                return;
            }
        }
    }
}