#include "dzilib.h"
#include <ios>
#include <set>
#include <map>
#include <functional>
#include <cassert>
#include <vector>
#define REP(i, n) for(int i=0; i<(n); ++i)
#define SREP(n) REP(_ ## n, n)
#define FOR(i, p, n) for(int i=(p); i<=(n); ++i)
#define RFOR(i, p, n) for(int i=(p); i>=(n); --i)
#define pb push_back
#define eb emplace_back
#define C const
#define V std::vector
#define F std::function
#define R std::ranges
#define RV std::ranges::views
#define sz(A) int(A.size())
#define all(A) A.begin(), A.end()
#define rall(A) A.rbegin(), A.rend()
typedef long long ll;
typedef long double ld;
typedef V <int> vi;
typedef V <vi> vvi;
typedef V <bool> vb;
typedef V <char> vc;
typedef V <ll> vll;
typedef const int ci;
typedef const ll cll;
int main() {
ci q = GetT();
ci zapcap = GetQ();
cll ycap = GetC();
cll ncap = GetN();
if (ncap<=int(1e6)){
ci dl=17;
ci n=int(ncap)+dl-1;
vi dziel(n+1, 1);
vi dzielkub(n+1);
//int pop=0;
FOR(i, 1, n){
if (dziel[i]==1&&i>1){
//printf("%d\n", i-pop);
//pop=i;
++dziel[i];
for (int j=i<<1; j<=n; j+=i){
int a=1;
int b=j;
while (!(b%i))
++a,b/=i;
dziel[j]*=a;
}
}
++dzielkub[dziel[i]];
}
//printf("jo\n");
//fflush(stdout);
std::map <vi, int> mapa;
FOR(i, 1, ncap){
static vi a;
a.clear();
FOR(j, i, i+dl-1)
a.eb(dziel[j]);
mapa[a]=i;
}
//FOR(i, 1, 20){
// printf("nd=%d x %d\n", i, dzielkub[i]);
//}
SREP(q){
static vi v;
v.clear();
REP(i, dl)
v.eb(Ask(i));
Answer(mapa[v]);
}
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #include "dzilib.h" #include <ios> #include <set> #include <map> #include <functional> #include <cassert> #include <vector> #define REP(i, n) for(int i=0; i<(n); ++i) #define SREP(n) REP(_ ## n, n) #define FOR(i, p, n) for(int i=(p); i<=(n); ++i) #define RFOR(i, p, n) for(int i=(p); i>=(n); --i) #define pb push_back #define eb emplace_back #define C const #define V std::vector #define F std::function #define R std::ranges #define RV std::ranges::views #define sz(A) int(A.size()) #define all(A) A.begin(), A.end() #define rall(A) A.rbegin(), A.rend() typedef long long ll; typedef long double ld; typedef V <int> vi; typedef V <vi> vvi; typedef V <bool> vb; typedef V <char> vc; typedef V <ll> vll; typedef const int ci; typedef const ll cll; int main() { ci q = GetT(); ci zapcap = GetQ(); cll ycap = GetC(); cll ncap = GetN(); if (ncap<=int(1e6)){ ci dl=17; ci n=int(ncap)+dl-1; vi dziel(n+1, 1); vi dzielkub(n+1); //int pop=0; FOR(i, 1, n){ if (dziel[i]==1&&i>1){ //printf("%d\n", i-pop); //pop=i; ++dziel[i]; for (int j=i<<1; j<=n; j+=i){ int a=1; int b=j; while (!(b%i)) ++a,b/=i; dziel[j]*=a; } } ++dzielkub[dziel[i]]; } //printf("jo\n"); //fflush(stdout); std::map <vi, int> mapa; FOR(i, 1, ncap){ static vi a; a.clear(); FOR(j, i, i+dl-1) a.eb(dziel[j]); mapa[a]=i; } //FOR(i, 1, 20){ // printf("nd=%d x %d\n", i, dzielkub[i]); //} SREP(q){ static vi v; v.clear(); REP(i, dl) v.eb(Ask(i)); Answer(mapa[v]); } return 0; } } |
English