#include <bits/stdc++.h>
#include "dzilib.h"
#define FOR(i,a,b) for(int i = a; i < b;++i)
#define pb emplace_back
#define ll long long
using namespace std;
const int maxn = 1e6 + 15005;
const int M = 1e9 + 7,p = 37;
vector<int> cnt(maxn,0);
vector<ll> pot,h;
int main(){
FOR(i,1,maxn){
for(int j = i; j <= maxn;j+=i){
++cnt[j];
}
}
pot.pb(1);
FOR(i,0,maxn){
ll k = pot[i] * p;
k%=M;
pot.pb(k);
}
h.pb(0);
FOR(i,1,maxn){
ll k = (cnt[i - 1] + 1) * pot[i - 1] + h[i - 1];
k%=M;
h.pb(k);
}
int n = GetT();
int k = GetQ();
int c = GetC();
int l = k / n;
FOR(i,0,n){
vector<int> wzo;
FOR(j,0,l){
wzo.pb(Ask(j));
}
ll wyn = 0;
FOR(j,0,wzo.size()){
wyn+=(wzo[j] + 1) * pot[j];
wyn%=M;
}
int z1 = wzo.size();
FOR(j,0,maxn - z1){
ll k = h[j + z1] - h[j] + M;
k%=M;
if(k == wyn){
Answer(j);
}
wyn*=p;
wyn%=M;
}
}
}
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 46 47 48 49 50 51 52 53 54 | #include <bits/stdc++.h> #include "dzilib.h" #define FOR(i,a,b) for(int i = a; i < b;++i) #define pb emplace_back #define ll long long using namespace std; const int maxn = 1e6 + 15005; const int M = 1e9 + 7,p = 37; vector<int> cnt(maxn,0); vector<ll> pot,h; int main(){ FOR(i,1,maxn){ for(int j = i; j <= maxn;j+=i){ ++cnt[j]; } } pot.pb(1); FOR(i,0,maxn){ ll k = pot[i] * p; k%=M; pot.pb(k); } h.pb(0); FOR(i,1,maxn){ ll k = (cnt[i - 1] + 1) * pot[i - 1] + h[i - 1]; k%=M; h.pb(k); } int n = GetT(); int k = GetQ(); int c = GetC(); int l = k / n; FOR(i,0,n){ vector<int> wzo; FOR(j,0,l){ wzo.pb(Ask(j)); } ll wyn = 0; FOR(j,0,wzo.size()){ wyn+=(wzo[j] + 1) * pot[j]; wyn%=M; } int z1 = wzo.size(); FOR(j,0,maxn - z1){ ll k = h[j + z1] - h[j] + M; k%=M; if(k == wyn){ Answer(j); } wyn*=p; wyn%=M; } } } |
English