fork download
  1. #include<boost/iterator/transform_iterator.hpp>
  2. #include<bits/stdc++.h>
  3. #define M make_pair
  4. #define I boost::make_transform_iterator
  5. #define Y begin
  6. #define V end
  7. #define S(x)Y(x),V(x),
  8. #define K(x,y)lower_bound(S(x)y)
  9. #define W vector
  10. #define X set_union
  11. #define F first
  12. #define E second
  13. #define A return
  14. #define O ;auto
  15. #define L ::iterator i,decltype(i)j,T m){if
  16. #define B resize
  17. #define C size()
  18. #define D rbegin(v)
  19. #define H [](Q a,Q b){A
  20. #define J ;using
  21. #define Z ,Y(v),prev(V(v)),m)
  22. J N=int J namespace std J P=pair<N,N>J Q=pair<N,P>J T=int64_t O o=H a.F<b.F;};string t;T G=10;P R(N p,P s,list<W<N>>L(i==j)A s;s=R(p*G%m,s,next(i),j,m);T k=s.E*G,r=s.F,d=k/m;r=!binary_search(S(*i)r)?k++,(r+m-p)%m:r;if(d|t.C)t+='0'+d;A{r,k%m};}void U(N x,N y,W<Q>L(y+~x){T z=x+y>>1 O k=lower_bound(i,j,M(N((m*z+9)/G),M(0,0)));U(x,z,i,k,m);U(z,y,k,j,m);inplace_merge(i,k,j,H M(a.F,a.E.E)<M(b.F,b.E.E);});}else{O k=i;for(;k-j;k++)k->F=k->F*G%m;}}Q $(N a){A{a,{a,0}};}string g(N m){if(m==1)A"1";list<W<N>>v{{0}};W<Q>a,_;for(N s=1,p=1,q;;){T r=p;v.emplace_back(D->C*2);W<N>&c=*D,&e=*next(D)O f=[m,r](N a){A(a+r)%m;}O n=K(e,p)O l=I(K(e,m-p),f);c.B(X(n,V(e),I(Y(e),f),l,X(Y(e),n,l,I(V(e),f),Y(c)))-Y(c))O w=K(a,M(q=m-r*p%m,M(0,0)))O y=[m,r,q,s](Q a){O[x,y]=a;A M((x+(T)q)%m,M((y.F+r)%m,s+y.E));}O z=I(K(a,M(m-q,M(0,0))),y);_.B(a.C*2+1)O i=X(Y(a),w,z,I(V(a),y),Y(_),o);if(w==V(a)||w->F-q)*i++={q,{p,s}};_.B(X(w,V(a),I(Y(a),y),z,i,o)-Y(_));a.swap(_);s+=e.C;p=p*G%m;U(0,G,S(a)m);a.B(unique(S(a)H a.F==b.F;})-Y(a));W<Q>h;set_intersection(S(a)I(Y(c),$),I(V(c),$),back_inserter(h),o);if(h.C){Q b=*min_element(S(h)H a.E.E<b.E.E;});t="";R(1,{b.F,R(1,{b.E.F,0}Z.E}Z;A t;}}}
  23.  
  24. N main(N c,char**v){if(c>1)for(fstream o(v[c=1]);c<=1e4;)o<<g(c++)<<'\n';else cin>>c,cout<<g(c)<<'\n';}
Success #stdin #stdout 1.81s 553576KB
stdin
1999999998
stdout
555555556111111111666666667222222222777777778333333333888888889444444445