/* * 1e6*sqrt(1e6) => slow?? */ #include using namespace std; #define PB push_back #define ZERO (1e-10) #define INF int(1e9+1) #define CL(A,I) (memset(A,I,sizeof(A))) #define DEB printf("DEB!\n"); #define D(X) cout<<" "<<#X": "<B&&A-ZERO pll; typedef vector vi; typedef pair ii; typedef vector vii; #define IN(n) int n;scanf("%d",&n); #define FOR(i, m, n) for (int i(m); i < n; i++) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define FT(m, n) FOR(k, m, n) #define aa first #define bb second void ga(int N,int *A){F(N)scanf("%d",A+i);} #define MX (1000006) vi D[MX]; int S[MX],I,a; int main(void){ FT(1,MX){ while(I*I<=k)++I; FOR(i,1,I)if(!(k%i)){ D[k].PB(i); if(k/i!=i)D[k].PB(k/i); } sort(D[k].begin(),D[k].end()); for(auto&h:D[k])for(auto&w:D[k/h]){ if(w>=h)break; S[k]+=k/h/w