517data
#include "testlib.h"
int main(int argc, char** argv) {
using namespace std;
registerGen(argc, argv, 1);
ofstream fout(opt(1));
int64_t ll = opt<long long>("ll");
int64_t rr = opt<long long>("rr");
ensure(ll < rr);
fout << opt<int>("t") << '\n';
for (int i = 0; i < opt<int>("t"); i++)
{
int64_t l = rnd.next(ll, rr);
int64_t r = rnd.next(ll, rr);
if (l > r)
swap(l, r);
fout << l << ' ' << r << '\n';
}
return 0;
}
#include "testlib.h"
int main(int argc, char** argv) {
using namespace std;
registerGen(argc, argv, 1);
for (int i = 1; i <= 10; i++)
{
int t = rnd.wnext(1, 10, 3);
system(("../517/gen ../517/t" + to_string(i) + ".in -t " + to_string(t)
+ " -ll 1 -rr 100000").c_str());
system(("../main < ../517/t" + to_string(i) + ".in"
" > ../517/t" + to_string(i) + ".out").c_str());
}
for (int i = 11; i <= 50; i++)
{
int t = rnd.wnext(1, 10, 5);
system(("../517/gen ../517/t" + to_string(i) + ".in -t " + to_string(t)
+ " -ll 1 -rr 9000000000000000000").c_str());
system(("../main < ../517/t" + to_string(i) + ".in"
" > ../517/t" + to_string(i) + ".out").c_str());
}
return 0;
}
517std
//贴上来供大家一起学习
//来自CodeForces #637114
#include <cstdio>
#include <cstring>
#define forn(i,n) for(int i=0;i<(int)n;i++)
typedef long long int64;
const int N = 2521, K = 48, N2 = 252;
int gcd(int& a, int b) { return b == 0 ? a : gcd(b, a % b); }
int LCM[10][K], len, a[20], t, d[K], o[N];
inline int lcm(const int& a, const int& b) {
if (!b) return a;
if (LCM[b][a] != -1) return LCM[b][a];
return LCM[b][a] = o[d[a] * b / gcd(d[a], b)];
}
int64 rez[20 * K * N2], l, r;
int64 get_ans(int len, const bool les, int lc, int mod) {
if (len == 0)
return mod % d[lc] == 0 ? 1 : 0;
if (mod >= N2)
mod -= N2;
int h = (len + (lc + mod * K) * 20);
if (les && rez[h] != -1)
return rez[h];
len--;
int W = (len == 0 ? (N - 1) : N2);
int64 ret = 0;
int u = (mod * 10) % W;
if (les)
forn(q, 10)
ret += get_ans(len, true, lcm(lc, q), u + q);
else
{
forn(q, a[len])
ret += get_ans(len, true, lcm(lc, q), u + q);
ret += get_ans(len, false, lcm(lc, a[len]), (mod * 10 + a[len]) % W);
}
len++;
if (les)
return rez[h] = ret;
return ret;
}
inline int64 ans(int64 x) {
len = 0;
while (x > 0) a[len++] = x % 10, x /= 10;
return get_ans(len, false, 0, 0);
}
int main() {
memset(LCM, -1, sizeof LCM);
memset(rez, -1, sizeof rez);
for (int i = 1; i < N; i++)
if ((N - 1) % i == 0)
d[t] = i, o[i] = t++;
for (scanf("%d", &t); t > 0; t--)
{
scanf("%lld%lld", &l, &r);
printf("%lld\n", (ans(r) - ans(l - 1)));
}
}
517val
#include "testlib.h"
constexpr long long Rm = 9000000000000000000;
int main() {
using namespace std;
registerValidation();
int t = inf.readInt(1, 10, "t");
inf.readEoln();
for (int i = 0; i < t; i++)
{
auto l = inf.readLong(1, Rm, "l");
inf.readSpace();
auto r = inf.readLong(1, Rm, "r");
inf.readEoln();
ensure(l <= r);
}
inf.readEof();
return 0;
}