結果

問題 No.315 世界のなんとか3.5
ユーザー koyumeishi
提出日時 2015-09-21 23:47:16
言語 C++11
(gcc 13.3.0)
結果
TLE  
実行時間 -
コード長 1,573 bytes
コンパイル時間 402 ms
コンパイル使用メモリ 56,924 KB
実行使用メモリ 182,272 KB
最終ジャッジ日時 2024-07-19 08:32:32
合計ジャッジ時間 35,261 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 30 TLE * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

//
//
//
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
string dig;
int border;
bool allowEqual;
int dp[200010][3][8][2][2][2];
int solve(int k, int mod3, int mod8, bool has3, bool less, bool suf0){
if(k >= dig.size()){
if(!less && !allowEqual){
return 0;
}
int aho = (mod3 == 0) || has3;
int haji = (mod8 == 0) && suf0;
return aho && !haji;
}
if(dp[k][mod3][mod8][has3][less][suf0] != -1){
return dp[k][mod3][mod8][has3][less][suf0];
}
int res = 0;
for(int i=0;i<10;i++){
int d = dig[k] - '0';
if(less || i <= d){
bool nsuf0 = suf0;
int nmod8 = mod8;
if(k >= border){
nsuf0 &= i == 0;
} else {
nmod8 = (nmod8 * 10 + i) % 8;
}
res += solve(k + 1, (mod3 * 10 + i) % 3, nmod8, has3 || (i == 3), less || (i < d), nsuf0);
if(res >= MOD){
res -= MOD;
}
}
}
return dp[k][mod3][mod8][has3][less][suf0] = res;
}
int solve(string s, int p, bool eq){
dig = s;
border = dig.size() - p;
allowEqual = eq;
memset(dp, -1, sizeof(dp));
return solve(0, 0, 0, false, false, true);
}
int main(){
string A, B;
cin >> A >> B;
int P;
cin >> P;
int p = 0;
while(P > 0){
++p;
P /= 10;
}
int resA = solve(A, p - 1, false);
int resB = solve(B, p - 1, true);
int res = resB - resA;
if(res < 0){
res += MOD;
}
cout << res << endl;
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0