SRM 403 DIV1 Easy - TheLuckyNumbers ○

問題


http://community.topcoder.com/stat?c=problem_statement&pm=8568&rd=12175

整数aとbが与えられる。
a以上かつb以下の整数のうち、4と7からなる整数の総数を求める。

解き方


a,bは10^9でありすべて全探索しては間に合わないが、
4と7からなる数字は2^9のため、
DFSにて4と7からなるすべての数字について調べればよい。

コード


int ret,a,b;

class TheLuckyNumbers {

public:

void dfs(long long x){
if(x<=b){
dfs(x*10+4);
dfs(x*10+7);
if(a<=x)ret++;
}
}

int count(int a_, int b_) {
a=a_,b=b_;
ret=0;
dfs(0);
return ret;
}

};
このエントリーをはてなブックマークに追加