poj1780欧拉回路
#include<cstdio> #include<cstring> const int N=1e6+88; bool vis[N]; char ans[N]; int main() { int n; while(scanf("%d",&n),n) { if(n==1) { puts("0123456789"); continue; } memset(vis,0,sizeof(vis)); int mod=1,end=1,pos=n; for(int i=1; i<=n; ++i) mod*=10,end*=10; mod/=10; end+=n-1; for(int i=0; i<n; ++i) ans[i]='0'; vis[0]=1; int now=0,i=0; while(pos<end) { now%=mod; for(; i<10; ++i) if(!vis[now*10+i]) { vis[now*10+i]=1; ans[pos++]=i+'0'; now=now*10+i; i=0; break; } if(i==10&&pos<end) { --pos; now=(ans[pos-n+1]-'0')*mod+now; vis[now]=0; i=now%10+1; now/=10; } } ans[end]='\0'; printf("%s\n",ans); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步