QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#125699 | #6741. Digit | minato | AC ✓ | 1792ms | 9684kb | C++17 | 20.6kb | 2023-07-17 12:49:13 | 2023-07-17 12:49:15 |
Judging History
answer
#pragma GCC target("avx2")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#line 1 "library-cpp/other/template.hpp"
// clang-format off
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <cmath>
#include <complex>
#include <deque>
#include <forward_list>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iostream>
#include <limits>
#include <list>
#include <map>
#include <numeric>
#include <optional>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <tuple>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
using namespace std;
using uint = unsigned int;
using ll = long long;
using ull = unsigned long long;
using i128 = __int128_t;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<long long, long long>;
template <class T> using maxheap = priority_queue<T>;
template <class T> using minheap = priority_queue<T, vector<T>, greater<T>>;
template <class T> using vec = vector<T>;
template <class T> using vvec = vector<vector<T>>;
#define OVERLOAD_REP(_1, _2, _3, name, ...) name
#define REP0(n) for (auto minato = decay_t<decltype(n)>{}; minato < (n); ++minato)
#define REP1(i, n) for (auto i = decay_t<decltype(n)>{}; (i) < (n); (i)++)
#define REP2(i, l, r) for (auto i = (l); (i) < (r); (i)++)
#define rep(...) OVERLOAD_REP(__VA_ARGS__, REP2, REP1, REP0)(__VA_ARGS__)
#define OVERLOAD_RREP(_1, _2, _3, name, ...) name
#define RREP1(i, n) for (auto i = (n) - 1; (i) >= decay_t<decltype(n)>{}; (i)--)
#define RREP2(i, l, r) for (auto i = (r) - 1; (i) >= (l); (i)--)
#define rrep(...) OVERLOAD_RREP(__VA_ARGS__, RREP2, RREP1)(__VA_ARGS__)
#define ALL(x) begin(x), end(x)
template <class Container> int SZ(const Container& v) { return int(v.size()); }
template <class T> void UNIQUE(vector<T>& v) { v.erase(unique(v.begin(), v.end()), v.end()); }
template <class T> T MAX(const vector<T>& v) { return *max_element(v.begin(), v.end()); }
template <class T> T MIN(const vector<T>& v) { return *min_element(v.begin(), v.end()); }
template <class T> T SUM(const vector<T>& v) { return accumulate(v.begin(), v.end(), T(0)); }
template <class T> T ABS(T x) { return max(x, -x); }
template <class T1, class T2> bool chmax(T1& a, T2 b) { if (a < b) { a = b; return true; } return false; }
template <class T1, class T2> bool chmin(T1& a, T2 b) { if (a > b) { a = b; return true; } return false; }
int topbit(ull x) { return x == 0 ? -1 : 63 - __builtin_clzll(x); }
int botbit(ull x) { return x == 0 ? 64 : __builtin_ctzll(x); }
int popcount(ull x) { return __builtin_popcountll(x); }
int kthbit(ull x, int k) { return (x >> k) & 1; }
constexpr long long TEN(int x) { return x == 0 ? 1 : TEN(x - 1) * 10; }
template <typename S> void rearrange(const vector<S>& id) { (void)id; }
template <typename S, typename T> void rearrange_exec(const vector<S>& id, vector<T>& v) { vector<T> w(v.size()); for (size_t i = 0; i < id.size(); i++) { w[i] = v[id[i]]; } v.swap(w); }
template <typename S, typename Head, typename... Tail> void rearrange(const vector<S>& id, Head& a, Tail& ...tail) { rearrange_exec(id, a); rearrange(id, tail...); }
istream& operator>>(istream& is, __int128_t& x) {
x = 0;
string s;
is >> s;
int n = int(s.size()), it = 0;
if (s[0] == '-') it++;
for (; it < n; it++) x = (x * 10 + s[it] - '0');
if (s[0] == '-') x = -x;
return is;
}
ostream& operator<<(ostream& os, __int128_t x) {
if (x == 0) return os << 0;
if (x < 0) os << '-', x = -x;
deque<int> deq;
while (x) deq.emplace_front(x % 10), x /= 10;
for (int e : deq) os << e;
return os;
}
template <class T> vector<T> &operator++(vector<T>& v) { for (auto& e : v) { e++; } return v;}
template <class T> vector<T> operator++(vector<T>& v, int) { auto res = v; for (auto& e : v) { e++; } return res; }
template <class T> vector<T> &operator--(vector<T>& v) { for (auto& e : v) { e--; } return v; }
template <class T> vector<T> operator--(vector<T>& v, int) { auto res = v; for (auto& e : v) { e--; } return res; }
template <class T1, class T2> pair<T1, T2> operator-(const pair<T1, T2>& x) { return pair<T1, T2>(-x.first, -x.second); }
template <class T1, class T2> pair<T1, T2> operator-(const pair<T1, T2>& x, const pair<T1, T2>& y) { return pair<T1, T2>(x.first - y.first, x.second - y.second); }
template <class T1, class T2> pair<T1, T2> operator+(const pair<T1, T2>& x, const pair<T1, T2>& y) { return pair<T1, T2>(x.first + y.first, x.second + y.second); }
template <class T1, class T2> pair<T1, T2> operator+=(pair<T1, T2>& l, const pair<T1, T2>& r) { return l = l + r; }
template <class T1, class T2> pair<T1, T2> operator-=(pair<T1, T2>& l, const pair<T1, T2>& r) { return l = l - r; }
constexpr char ln = '\n';
const string YESNO[2] = {"NO", "YES"};
const string YesNo[2] = {"No", "Yes"};
void YES(bool t = true) { cout << YESNO[t] << "\n"; }
void NO(bool t = 1) { YES(!t); }
void Yes(bool t = true) { cout << YesNo[t] << "\n"; }
void No(bool t = 1) { Yes(!t); }
template <class T> void drop(T x) { cout << x << "\n"; exit(0); }
#define INT(...) \
int __VA_ARGS__; \
IN(__VA_ARGS__)
#define LL(...) \
ll __VA_ARGS__; \
IN(__VA_ARGS__)
#define STR(...) \
string __VA_ARGS__; \
IN(__VA_ARGS__)
#define CHR(...) \
char __VA_ARGS__; \
IN(__VA_ARGS__)
#define LDB(...) \
long double __VA_ARGS__; \
IN(__VA_ARGS__)
#define VEC(type, name, size) \
vector<type> name(size); \
IN(name)
#define VEC2(type, name1, name2, size) \
vector<type> name1(size), name2(size); \
for (int i = 0; i < size; i++) IN(name1[i], name2[i])
#define VEC3(type, name1, name2, name3, size) \
vector<type> name1(size), name2(size), name3(size); \
for (int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i])
#define VEC4(type, name1, name2, name3, name4, size) \
vector<type> name1(size), name2(size), name3(size), name4(size); \
for (int i = 0; i < size; i++) IN(name1[i], name2[i], name3[i], name4[i]);
#define VV(type, name, N, M) \
vector<vector<type>> name(N, vector<type>(M)); \
IN(name)
template <class T> void scan(T& a) { cin >> a; }
template <class T> void scan(vector<T>& a) { for (auto& i : a) scan(i); }
void IN() {}
template <class Head, class... Tail> void IN(Head& head, Tail&... tail) { scan(head); IN(tail...); }
void print() { cout << "\n"; }
template <class T> void print(const vector<T>& v) { for (auto it = v.begin(); it != v.end(); ++it) { if (it != v.begin()) { cout << " "; } cout << *it; } print(); }
template <class T, class... Args> void print(const T& x, const Args& ... args) { cout << x; if (sizeof...(Args)) cout << " "; print(args...); }
#ifdef MINATO_LOCAL
template <class T1, class T2> ostream& operator<<(ostream& os, pair<T1, T2> p) { return os << "(" << p.first << ", " << p.second << ")"; }
template <size_t N, class TUPLE> void debug_tuple(ostream& os, TUPLE _) { (void)os; (void)_; }
template <size_t N, class TUPLE, class T, class ...Args> void debug_tuple(ostream &os, TUPLE t) { os << (N == 0 ? "" : ", ") << get<N>(t); debug_tuple<N + 1, TUPLE, Args...>(os, t); }
template <class ...Args> ostream& operator<<(ostream& os, tuple<Args...> t) { os << "("; debug_tuple<0, tuple<Args...>, Args...>(os, t); return os << ")"; }
string debug_delim(int& i) { return i++ == 0 ? "" : ", "; }
#define debug_embrace(x) { int i = 0; os << "{"; { x } return os << "}"; }
template <class T> ostream& operator<<(ostream& os, vector<T> v) { debug_embrace( for (T e : v) { os << debug_delim(i) << e; } ) }
template <class T, size_t N> ostream& operator<<(ostream& os, array<T, N> a) { debug_embrace( for (T e : a) { os << debug_delim(i) << e; } ) }
template <class T, size_t N> enable_if_t<!is_same_v<char, remove_cv_t<T>>, ostream>& operator<<(ostream& os, T(&a)[N]) { debug_embrace( for (T e : a) { os << debug_delim(i) << e; } ) }
template <class Key> ostream& operator<<(ostream& os, set<Key> s) { debug_embrace( for (Key e : s) { os << debug_delim(i) << e; }) }
template <class Key, class T> ostream& operator<<(ostream& os, map<Key, T> mp) { debug_embrace( for (auto e : mp) { os << debug_delim(i) << e; }) }
template <class Key> ostream& operator<<(ostream& os, multiset<Key> s) { debug_embrace( for (Key e : s) { os << debug_delim(i) << e; }) }
template <class T> ostream& operator<<(ostream& os, queue<T> q) { debug_embrace( for (; !q.empty(); q.pop()) { os << debug_delim(i) << q.front(); } ) }
template <class T> ostream& operator<<(ostream& os, deque<T> q) { debug_embrace( for (T e : q) { os << debug_delim(i) << e; } ) }
template <class T> ostream& operator<<(ostream& os, priority_queue<T> q) { debug_embrace( for (; !q.empty(); q.pop()) { os << debug_delim(i) << q.top(); } ) }
template <class T> ostream& operator<<(ostream& os, priority_queue<T, vector<T>, greater<T>> q) { debug_embrace( for (; !q.empty(); q.pop()) { os << debug_delim(i) << q.top(); } ) }
void debug_out() { cerr << endl; }
template <class T, class... Args> void debug_out(const T& x, const Args& ... args) { cerr << " " << x; debug_out(args...); }
#define debug(...) cerr << __LINE__ << " : [" << #__VA_ARGS__ << "] =", debug_out(__VA_ARGS__)
#else
#define debug(...) (void(0))
#endif
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// clang-format on
#line 2 "library-cpp/mod/ModInt.hpp"
#line 2 "library-cpp/other/type_traits.hpp"
namespace internal {
#ifndef _MSC_VER
template <class T>
using is_signed_int128 =
typename std::conditional<std::is_same<T, __int128_t>::value ||
std::is_same<T, __int128>::value,
std::true_type,
std::false_type>::type;
template <class T>
using is_unsigned_int128 =
typename std::conditional<std::is_same<T, __uint128_t>::value ||
std::is_same<T, unsigned __int128>::value,
std::true_type,
std::false_type>::type;
template <class T>
using make_unsigned_int128 =
typename std::conditional<std::is_same<T, __int128_t>::value,
__uint128_t,
unsigned __int128>;
template <class T>
using is_integral = typename std::conditional<std::is_integral<T>::value ||
is_signed_int128<T>::value ||
is_unsigned_int128<T>::value,
std::true_type,
std::false_type>::type;
template <class T>
using is_signed_int = typename std::conditional<(is_integral<T>::value &&
std::is_signed<T>::value) ||
is_signed_int128<T>::value,
std::true_type,
std::false_type>::type;
template <class T>
using is_unsigned_int =
typename std::conditional<(is_integral<T>::value &&
std::is_unsigned<T>::value) ||
is_unsigned_int128<T>::value,
std::true_type,
std::false_type>::type;
template <class T>
using to_unsigned = typename std::conditional<
is_signed_int128<T>::value,
make_unsigned_int128<T>,
typename std::conditional<std::is_signed<T>::value,
std::make_unsigned<T>,
std::common_type<T>>::type>::type;
#else
template <class T> using is_integral = typename std::is_integral<T>;
template <class T>
using is_signed_int =
typename std::conditional<is_integral<T>::value && std::is_signed<T>::value,
std::true_type,
std::false_type>::type;
template <class T>
using is_unsigned_int =
typename std::conditional<is_integral<T>::value &&
std::is_unsigned<T>::value,
std::true_type,
std::false_type>::type;
template <class T>
using to_unsigned = typename std::conditional<is_signed_int<T>::value,
std::make_unsigned<T>,
std::common_type<T>>::type;
#endif
template <class T>
using is_signed_int_t = std::enable_if_t<is_signed_int<T>::value>;
template <class T>
using is_unsigned_int_t = std::enable_if_t<is_unsigned_int<T>::value>;
template <class T> using to_unsigned_t = typename to_unsigned<T>::type;
} // namespace internal
#line 4 "library-cpp/mod/ModInt.hpp"
#line 6 "library-cpp/mod/ModInt.hpp"
template <int m> struct ModInt {
public:
static constexpr int mod() {
return m;
}
static ModInt raw(int v) {
ModInt x;
x._v = v;
return x;
}
ModInt() : _v(0) {
}
template <class T, internal::is_signed_int_t<T>* = nullptr> ModInt(T v) {
long long x = (long long)(v % (long long)(umod()));
if (x < 0) x += umod();
_v = (unsigned int)(x);
}
template <class T, internal::is_unsigned_int_t<T>* = nullptr> ModInt(T v) {
_v = (unsigned int)(v % umod());
}
unsigned int val() const {
return _v;
}
ModInt& operator++() {
_v++;
if (_v == umod()) _v = 0;
return *this;
}
ModInt& operator--() {
if (_v == 0) _v = umod();
_v--;
return *this;
}
ModInt operator++(int) {
ModInt result = *this;
++*this;
return result;
}
ModInt operator--(int) {
ModInt result = *this;
--*this;
return result;
}
ModInt& operator+=(const ModInt& rhs) {
_v += rhs._v;
if (_v >= umod()) _v -= umod();
return *this;
}
ModInt& operator-=(const ModInt& rhs) {
_v -= rhs._v;
if (_v >= umod()) _v += umod();
return *this;
}
ModInt& operator*=(const ModInt& rhs) {
unsigned long long z = _v;
z *= rhs._v;
_v = (unsigned int)(z % umod());
return *this;
}
ModInt& operator^=(long long n) {
ModInt x = *this;
*this = 1;
if (n < 0) x = x.inv(), n = -n;
while (n) {
if (n & 1) *this *= x;
x *= x;
n >>= 1;
}
return *this;
}
ModInt& operator/=(const ModInt& rhs) {
return *this = *this * rhs.inv();
}
ModInt operator+() const {
return *this;
}
ModInt operator-() const {
return ModInt() - *this;
}
explicit operator bool() const {
return _v != 0;
}
ModInt pow(long long n) const {
ModInt r = *this;
r ^= n;
return r;
}
ModInt inv() const {
int a = _v, b = umod(), y = 1, z = 0, t;
for (;;) {
t = a / b;
a -= t * b;
if (a == 0) {
assert(b == 1 || b == -1);
return ModInt(b * z);
}
y -= t * z;
t = b / a;
b -= t * a;
if (b == 0) {
assert(a == 1 || a == -1);
return ModInt(a * y);
}
z -= t * y;
}
}
friend ModInt operator+(const ModInt& lhs, const ModInt& rhs) {
return ModInt(lhs) += rhs;
}
friend ModInt operator-(const ModInt& lhs, const ModInt& rhs) {
return ModInt(lhs) -= rhs;
}
friend ModInt operator*(const ModInt& lhs, const ModInt& rhs) {
return ModInt(lhs) *= rhs;
}
friend ModInt operator/(const ModInt& lhs, const ModInt& rhs) {
return ModInt(lhs) /= rhs;
}
friend ModInt operator^(const ModInt& lhs, long long rhs) {
return ModInt(lhs) ^= rhs;
}
friend bool operator==(const ModInt& lhs, const ModInt& rhs) {
return lhs._v == rhs._v;
}
friend bool operator!=(const ModInt& lhs, const ModInt& rhs) {
return lhs._v != rhs._v;
}
friend ModInt operator+(long long lhs, const ModInt& rhs) {
return (ModInt(lhs) += rhs);
}
friend ModInt operator-(long long lhs, const ModInt& rhs) {
return (ModInt(lhs) -= rhs);
}
friend ModInt operator*(long long lhs, const ModInt& rhs) {
return (ModInt(lhs) *= rhs);
}
friend ostream& operator<<(ostream& os, const ModInt& M) {
return os << M._v;
}
friend istream& operator>>(istream& is, ModInt& M) {
long long x;
is >> x;
M = x;
return is;
}
private:
unsigned int _v;
static constexpr unsigned int umod() {
return m;
}
};
#line 2 "library-cpp/mod/ModCombination.hpp"
#line 5 "library-cpp/mod/ModCombination.hpp"
template <class M> struct ModCombination {
public:
ModCombination() {
}
ModCombination(int n) : n_(n), fac_(n + 1), facinv_(n + 1) {
assert(1 <= n);
fac_[0] = 1;
for (int i = 1; i <= n; i++) fac_[i] = fac_[i - 1] * i;
facinv_[n] = M(1) / fac_[n];
for (int i = n; i >= 1; i--) facinv_[i - 1] = facinv_[i] * i;
}
M fac(int k) const {
assert(0 <= k and k <= n_);
return fac_[k];
}
M facinv(int k) const {
assert(0 <= k and k <= n_);
return facinv_[k];
}
M inv(int k) const {
assert(1 <= k and k <= n_);
return facinv_[k] * fac_[k - 1];
}
M P(int n, int k) const {
if (k < 0 or k > n) return M(0);
assert(n <= n_);
return fac_[n] * facinv_[n - k];
}
M C(int n, int k) const {
if (k < 0 or k > n) return M(0);
assert(n <= n_);
return fac_[n] * facinv_[n - k] * facinv_[k];
}
/**
* @note H(n, k) = (n 個 のボールを k 個の箱に分ける方法の数)
* @note H(n, k) = C(n + k - 1, n)
*/
M H(int n, int k) const {
if (n == 0 and k == 0) return M(1);
return C(n + k - 1, n);
}
M catalan(int n) const {
if (n == 0) return M(1);
return C(2 * n, n) - C(2 * n, n - 1);
}
private:
int n_;
std::vector<M> fac_, facinv_;
};
#line 4 "I.cpp"
using mint = ModInt<998244353>;
// using mint = ModInt<1000000007>;
#include <ext/pb_ds/assoc_container.hpp>
struct splitmix64_hash {
static uint64_t splitmix64(uint64_t x) {
// http://xorshift.di.unimi.it/splitmix64.c
x += 0x9e3779b97f4a7c15;
x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
return x ^ (x >> 31);
}
size_t operator()(uint64_t x) const {
static const uint64_t FIXED_RANDOM =
std::chrono::steady_clock::now().time_since_epoch().count();
return splitmix64(x + FIXED_RANDOM);
}
};
template <class Key, class T, class Hash = splitmix64_hash>
using hash_map = __gnu_pbds::gp_hash_table<Key, T, Hash>;
template <class Key, class Hash = splitmix64_hash>
using hash_set = hash_map<Key, __gnu_pbds::null_type, Hash>;
ull x, N;
hash_map<ull, mint> memo;
map<pair<ull, ull>, mint> ans;
mint dp(ull n) {
if (memo.find(n) != memo.end()) return memo[n];
if (n > N) return memo[n] = 0;
ull tmp = n;
int cnt = 0;
int zero = 0;
mint val = 0;
while (tmp) {
cnt++;
ull d = tmp % 10;
if (d == 0) {
zero++;
tmp /= 10;
continue;
}
ull nex = min(N + 1, n * (d + 1));
val += dp(nex);
tmp /= 10;
}
val /= cnt;
val++;
val /= cnt - zero;
val *= cnt;
return memo[n] = val;
}
void solve() {
cin >> x >> N;
if (ans.count({x, N})) {
print(ans[{x, N}]);
return;
}
memo.clear();
ans[{x, N}] = dp(x);
print(ans[{x, N}]);
}
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
cout << fixed << setprecision(20);
cerr << fixed << setprecision(7);
int T = 1;
cin >> T;
for (int test_case = 1; test_case <= T; test_case++) {
// debug(test_case);
solve();
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3528kb
input:
3 1 10 1 100 1 1000
output:
3 4 942786340
result:
ok 3 number(s): "3 4 942786340"
Test #2:
score: 0
Accepted
time: 1247ms
memory: 9348kb
input:
200 6093 473302679260560320 8548 407261659389622784 643 187875386337017408 8115 804844129595563776 3331 457909423622471360 8554 769878068775393152 2189 248771553604839360 7395 486014798136226944 8022 834223266052054400 9218 291007794161740672 8431 738787973811775616 1829 183591119896739584 816 23406...
output:
401752224 25564055 349247348 24571488 454552241 293307892 841921314 316896313 340265070 679232017 880794571 220757927 783764236 593413719 368463075 771186516 780654585 3628414 827863355 617858224 868927625 446978548 351494058 130284374 125073939 38120850 748432314 277667083 183850680 235708406 51111...
result:
ok 200 numbers
Test #3:
score: 0
Accepted
time: 175ms
memory: 6452kb
input:
200 3043059018339257 22277869996577613 9995869516 503712331451 389592 72563932968 3520234478258 476959582208156 77586585 711120211545804458 77846354 2243822883730937 9937954107 8390895135555 39032 603567 7739 4682236745217490 12277973519 7136059697857236 7264388 607094625 66205992799 4030219735546 3...
output:
108920162 651706276 549514920 440563412 796578996 851857830 191543780 540715694 549223125 380090491 553492005 247956062 582309209 67430878 174114881 1 669072219 981051601 561639793 304668111 397423058 607062211 8458982 479445466 287831358 913943402 533482140 801644611 519995972 239199505 587671914 2...
result:
ok 200 numbers
Test #4:
score: 0
Accepted
time: 1792ms
memory: 9684kb
input:
200 58 999999999999997440 75 999999999999999872 52 999999999999997696 85 999999999999999360 12 999999999999999488 77 999999999999999232 80 999999999999999232 36 999999999999997184 51 999999999999998720 79 999999999999997440 76 999999999999998592 90 999999999999997696 32 999999999999998336 67 9999999...
output:
603520497 574767370 222266238 241598642 627473669 958322466 776467011 836867165 317725053 772230956 80008248 170 205889745 956913345 252066713 183389093 251365357 387390363 836867165 660512518 265265911 574767370 317725053 620530996 15655429 247241569 103698881 940321220 960908253 960908253 66051251...
result:
ok 200 numbers
Test #5:
score: 0
Accepted
time: 609ms
memory: 9612kb
input:
200 509411 999999999999999232 33801448 999999999999998720 65 999999999999998208 6 999999999999997184 404287 999999999999999360 800418816395 999999999999999232 44589090134507 999999999999997312 2008080 999999999999999360 13 999999999999998976 87 999999999999999872 206327851576605 999999999999999744 3...
output:
883813861 221710219 620530996 252066714 168038945 932330901 77414612 443356611 1883978 608670663 568648025 891202485 151357997 793825022 180372901 749235099 391331669 890726608 103698881 258627374 738512765 18273750 771644777 916674174 110687232 890972839 85823452 799141196 739829892 675630993 44879...
result:
ok 200 numbers
Test #6:
score: 0
Accepted
time: 12ms
memory: 7872kb
input:
200 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 1000000000000000000 1 10000000...
output:
252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 252066716 ...
result:
ok 200 numbers