#include <iostream>
#include <cstdint>
#include <vector>
#include <utility>
namespace {
using std::ios_base, std::cin, std::cout;
using std::vector, std::pair;
using event_t = vector<pair<uint64_t, uint64_t>>;
constexpr uint64_t MODULO = 1'000'000'007;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
uint64_t n, q;
cin >> n >> q;
event_t aibi(n + 1);
for (uint64_t i = 1; i <= n; ++i) {
uint64_t ai, bi;
cin >> ai >> bi;
aibi[i] = { ai, bi };
}
for (uint64_t i = 0; i < q; ++i) {
uint64_t xi, li, ri;
cin >> xi >> li >> ri;
for (uint64_t w = li + 1; w <= ri; ++w) {
if (aibi[w].second == 1 || (xi <= aibi[w].first / (aibi[w].second - 1))
== ((xi % MODULO) <= aibi[w].first / (aibi[w].second - 1))) {
xi = xi % MODULO;
}
if (aibi[w].second == 1 || (xi <= aibi[w].first / (aibi[w].second - 1))) {
xi += aibi[w].first;
} else {
if (xi > static_cast<uint64_t>(-1) / aibi[w].second) {
xi = xi % MODULO;
}
xi *= aibi[w].second;
}
}
cout << (xi % MODULO) << '\n';
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> #include <cstdint> #include <vector> #include <utility> namespace { using std::ios_base, std::cin, std::cout; using std::vector, std::pair; using event_t = vector<pair<uint64_t, uint64_t>>; constexpr uint64_t MODULO = 1'000'000'007; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); uint64_t n, q; cin >> n >> q; event_t aibi(n + 1); for (uint64_t i = 1; i <= n; ++i) { uint64_t ai, bi; cin >> ai >> bi; aibi[i] = { ai, bi }; } for (uint64_t i = 0; i < q; ++i) { uint64_t xi, li, ri; cin >> xi >> li >> ri; for (uint64_t w = li + 1; w <= ri; ++w) { if (aibi[w].second == 1 || (xi <= aibi[w].first / (aibi[w].second - 1)) == ((xi % MODULO) <= aibi[w].first / (aibi[w].second - 1))) { xi = xi % MODULO; } if (aibi[w].second == 1 || (xi <= aibi[w].first / (aibi[w].second - 1))) { xi += aibi[w].first; } else { if (xi > static_cast<uint64_t>(-1) / aibi[w].second) { xi = xi % MODULO; } xi *= aibi[w].second; } } cout << (xi % MODULO) << '\n'; } } |
English