WARush

SRMの結果とか、解けた問題のコードを書いていきます

SRM568 Div2 Easy "TheSimilarNumbers"

問題

http://community.topcoder.com/stat?c=problem_statement&pm=10553

2つの正の整数A Bにおいて、A <= 10*B かつ B <= 10*AであるようなA, Bをsimilarと定義する。
例えば1と10はsimilarであるが、1と11はそうではない。

lowerupperが与えられる。
lower以上upper以下の整数から
既に選んだ整数と互いにsimilarでない整数を選んでいく時、
整数が最大何個選べるかを返せ。

制約

1 <= upper <= 10^6
1 <= lower <= upper


考えた事

最小の整数(lower)から貪欲に選んでいく


ソースコード

class TheSimilarNumbers{
public:
    int find( int lower, int upper ){
        int cnt = 1;
        int i = lower;
        while( true ){
            if( i * 10 + 1 <= upper ){
                cnt++;
            }else{
                break;
            }
            i = i * 10 + 1;
        }
        return cnt;
    }
};