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はそうではない。
lowerとupperが与えられる。
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; } };