省略
省略
C++に変換後のコードはこちら
int TEST;
int sz, d[20];
ll dp[2], nx[2];
ll solve(ll x){
ll res = 0;
if(x==0) return res;
sz = 0;
while(x) d[sz++] = x%10, x/=10;
reverse(d, d+sz);
rep(i,1,sz) res += 5LL ** i;
(dp[0], dp[1]) = (0, 1);
rep(k,sz){
(nx[0], nx[1]) = (0, 0);
rep(i,(k+1)%2,10,2){
nx[0] += dp[0];
if(i < d[k]) nx[0] += dp[1];
if(i==d[k]) nx[1] += dp[1];
}
(dp[0], dp[1]) = (nx[0], nx[1]);
}
return res + dp[0] + dp[1];
}
{
REP(TEST,rd_int()){
ll @L, @R;
wtF("Case #{TEST+1}: ");
wt(solve(R) - solve(L-1));
}
}
Current time: 2024年04月30日03時00分21秒
Last modified: 2020年11月15日16時54分46秒 (by laycrs)
Tags: Competitive_Programming_Incomplete KickStart
トップページに戻る
Logged in as: unknown user (not login)