#include #include #include #include #include #include #include #include #include #include using namespace std; #define MOD 1000000007 int P; long long func(string& s){ //dp[mod_P][lower | has3 | mod3] vector> dp (P, vector(16, 0)); vector> dp_(P, vector(16, 0)); int keta; int tmp = P; int two = 0; int five = 0; while(tmp%2==0){ tmp/=2; two++; } while(tmp%5==0){ tmp/=5; five++; } keta = max(two, five); dp[0][0b0000] = 1; for(int i=0; is[i]-'0') continue; int next_state = (lower || d keta){ long long& dp_now = dp[0][state]; long long& dp_next = dp_[0][next_state]; dp_next += dp_now; if(dp_next>=MOD) dp_next -= MOD; }else for(int mod_P=0; mod_P=MOD) dp_next -= MOD; } } } swap(dp, dp_); } long long ret = 0; for(int mod_P=1; mod_P=MOD) ret -= MOD; } } return ret; } int main(){ string a,b; cin >> a >> b; cin >> P; long long ans = 0; ans += func(b); ans -= func(a); ans = (ans+MOD)%MOD; int mod3 = 0; int has3 = 0; int mod_P = 0; for(int i=0; i