-15 Removals
+15 Additions
#include <stdio.h>#include <stdio.h>
#include <stack>#include <stack>
#include <map>#include <map>
#include <string.h>#include <string.h>
#include <string>#include <string>
#include <iostream>#include <iostream>
#include <algorithm>#include <algorithm>
#include <iomanip>#include <iomanip>
#include <math.h>#include <math.h>
#include <vector>#include <vector>
#include <set>#include <set>
#include <queue>#include <queue>
#include <functional>#include <functional>
using namespace std;using namespace std;
#define ll long long#define ll long long
#define mp make_pair#define mp make_pair
#define pb push_back#define pb push_back
//#define ld long double//#define ld long double
const double sn = 1e-6;const double sn = 1e-6;
ll mod = 1000000007;ll mod = 1000000007;
ll dp[5000005];ll dp[5000005];
ll t, l, r;int t, l, r;
int main() {int main() {
scanf("%I64d%I64d%I64d", &t, &l, &r); scanf("%d %d %d", &t, &l, &r);
ll ans = 0; ll ans = 0;
for (ll i = 2; i <= r; i++) { for (int i = 2; i <= r; i++) {
dp[i] = LLONG_MAX; dp[i] = LLONG_MAX;
} }
for (ll i = 2; i <= r; i++) { for (int i = 2; i <= r; i++) {
dp[i] = min(dp[i], ((i*(i - 1)) / 2)); dp[i] = min( dp[i], 1ll * i * (i - 1) / 2 );
for (ll j = 2 * i; j <= r; j += i) { for (int j = 2 * i; j <= r; j += i) {
ll t = j/i; int t = j/i;
ll val = ((t*(t - 1)) / 2); ll val = 1ll * t * (t - 1) / 2;
val = (val * i); val = (val * i);
dp[j] = min(dp[j], (val + dp[i])); dp[j] = min(dp[j], (val + dp[i]));
} }
} }
ll ti = 1; ll ti = 1;
for (ll i = 0; i <= r - l; i++) { for (int i = 0; i <= r - l; i++) {
ll v1 = ti%mod, v2 = dp[i+l]%mod; ll v1 = ti, v2 = dp[i+l]%mod;
ll v3 = (v1*v2) % mod; ll v3 = v1 * v2;
ans = (ans + v3) % mod; ans = (ans + v3) % mod;
ti = (ti*t) % mod; ti = (ti*t) % mod;
} }
printf("%I64d\n", ans%mod); printf("%I64d\n", ans%mod);
return 0; return 0;
}}
Editor
Original Text
Changed Text