void solve() { ll r; int i,j; int divs[MAX]; scanf("%d %d",&n,&k); if(k>n) k=n; calcdp(); r=calclen(n); for(i=1;i<n;i++) if(n%i==0) divs[i]=n/i-1; for(i=n-1;i;i--) if(n%i==0) for(j=i-1;j;j--) if(i%j==0) divs[j]-=divs[i]; for(i=1;i<n;i++) if(n%i==0) r=(r+divs[i]*calclen(i))%((ll)MOD*n); if(n==k) r+=n; printf("%I64d\n",r/n); }
void wrap(Signal *s) { if(s->alg == 0) s->alg = defroute; switch(s->alg) { case RTSP: tsp(s); s->prfn = prseq; break; case RTSPE: tspe(s); s->prfn = prseq; break; case RHAND: hand(s); s->prfn = prseq; break; case RMST: mst(s); s->prfn = prmst; break; case RMST3: mst3(s); s->prfn = prmst; break; default: f_major("Unknown routing algorithm %d", s->alg); abort(); return; } calclen(s); }