#include <iostream>
using namespace std;
typedef long long ll;
const ll MAX_N = 500000;
const ll MOD = 1000000007;
ll a[MAX_N];
ll b[MAX_N];
ll c[MAX_N];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, q, r, l;
bool f;
ll x;
cin>>n>>q;
for (int i = 0; i < n; i++) {
cin>>a[i]>>b[i];
c[i] = (b[i]!=1)? a[i]/(b[i]-1) : MOD;
}
while(q){
cin>>x>>l>>r;
f = false;
for (int i = l; i < r; i++) {
if(f){
x = x%MOD;
x = (b[i]==1)? x+a[i] : x*b[i];
} else {
x = (c[i]>=x)? x+a[i] : x*b[i];
f = x >= MOD;
}
}
cout<<x%MOD<<"\n";
--q;
}
return 0;
}
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 | #include <iostream> using namespace std; typedef long long ll; const ll MAX_N = 500000; const ll MOD = 1000000007; ll a[MAX_N]; ll b[MAX_N]; ll c[MAX_N]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n, q, r, l; bool f; ll x; cin>>n>>q; for (int i = 0; i < n; i++) { cin>>a[i]>>b[i]; c[i] = (b[i]!=1)? a[i]/(b[i]-1) : MOD; } while(q){ cin>>x>>l>>r; f = false; for (int i = l; i < r; i++) { if(f){ x = x%MOD; x = (b[i]==1)? x+a[i] : x*b[i]; } else { x = (c[i]>=x)? x+a[i] : x*b[i]; f = x >= MOD; } } cout<<x%MOD<<"\n"; --q; } return 0; } |
English