hdu1664 Different Digits
来源:互联网 发布:java中断 原理 编辑:程序博客网 时间:2024/06/12 00:12
对于任意
这题让我想起了前几天同学给我看的一道水题(Poj2551),这题提到对于任意奇数
同样,该序列一定在模
即
当然,在这题中,先检查
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define clr(a) memset(a,0,sizeof(a))typedef long long ll;struct nd{ char x; int mx,sx; int fa;}qe[200010];int _hd,_tl;int bd[70010],_bd=0;int _ck(int x,int a){ int _a=a%x,r=1; ++_bd; while(1){ if(bd[_a]==_bd)return 0; if(!_a)return r; bd[_a]=_bd,++r; _a=(_a*10+a)%x; }};int szle;char sz[70010];void _psh(int x){ if(qe[x].fa)_psh(qe[x].fa); sz[qe[x].mx]=qe[x].x;};char tz[70010];void __psh(int x){ if(qe[x].fa)__psh(qe[x].fa); tz[qe[x].mx]=qe[x].x;};bool _mp(){ int i; for(i=1;sz[i]==tz[i];++i); return tz[i]<sz[i];};void __ck(int x,int a,int b){ _hd=0,_tl=1; qe[0].mx=0;qe[0].sx=x; ++_bd; bool fg=0;int i,t; for(;_hd<_tl;++_hd){ if(bd[qe[_hd].sx]==_bd)continue; if(!qe[_hd].sx)break; bd[qe[_hd].sx]=_bd; t=(qe[_hd].sx*10+a)%x; if(bd[t]!=_bd){ qe[_tl].fa=_hd; qe[_tl].sx=t; qe[_tl].x=char(a+'0'); qe[_tl].mx=qe[_hd].mx+1; ++_tl; if(!_hd&&!a)--_tl; } t=(qe[_hd].sx*10+b)%x; if(bd[t]!=_bd){ qe[_tl].fa=_hd; qe[_tl].sx=t; qe[_tl].x=char(b+'0'); qe[_tl].mx=qe[_hd].mx+1; ++_tl; if(!_hd&&!b)--_tl; } } if(_hd!=_tl){ if(!szle)szle=qe[_hd].mx,_psh(_hd); else{ if(szle>qe[_hd].mx)szle=qe[_hd].mx,_psh(_hd); else{ if(szle==qe[_hd].mx){ __psh(_hd); if(_mp()){ for(i=1;i<=szle;++i) sz[i]=tz[i]; } } } } }};int n;bool cl(){ scanf("%d",&n); if(!n)return 0; int i,t,le=0;char ri;bool fg=0; for(i=1;i<10;++i){ t=_ck(n,i); if(!le) le=t,ri=char(i+'0'); else if(t&&le>t) le=t,ri=char(i+'0'); } if(le){ for(i=0;i<le;putchar(ri),++i); putchar('\n'); } else{ szle=0; for(i=0;i<10;++i)for(t=i+1;t<10;++t) __ck(n,i,t); for(i=1;i<=szle;putchar(sz[i++])); putchar('\n'); } return 1;};int main(){#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);#endif while(cl()); return 0;};
0 0
- hdu1664 Different Digits
- hdu1664 Different Digits (搜索)
- hdu1664 Different Digits (搜索)
- HDU1664 Different Digits(bfs +数论剪枝)
- hdu 1664 Different Digits
- HDU 1664 Different Digits
- HDU 1664 Different Digits
- POJ 2283 Different Digits
- hdu Different Digits 1664
- hdu 1664 Different Digits
- UVa 12527 - Different Digits
- HDOJ 1664 Different digits
- UVA 1341 - Different Digits(数论)
- HDU-1664-Different Digits(BFS)
- 【搜索】 HDU 1664 Different Digits
- HDU 1664 POJ 2283 Different Digits
- uva 1341 - Different Digits(数论+bfs)
- UVA - 1341 Different Digits (同余)
- Android使用RecyclerView分隔线问题
- Sublime Text 3 全程详细图文
- HttpURLConnection 访问网页异常 问题的解决方法
- 大数据IMF传奇行动 IDEA导入spark源代码! 走入spark源代码世界!
- hashset hashcode们
- hdu1664 Different Digits
- 表单数据集定义
- java.io.FileNotFoundException: class path resource [XXXXX.xml] cannot be opened
- Java序列求和
- jQuery15(元素each方法,表单选择器)
- <Java设计模式>—抽象工厂模式
- 选项卡组件定义
- Linux目录遍历实现 -- 列出当前目录下所有文件
- 树定义