UVA11549 计算机谜题(Floyd判圈算法)
来源:互联网 发布:暗黑团队毁魔兽 知乎 编辑:程序博客网 时间:2024/06/05 05:38
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<set> 7 #include<sstream> 8 using namespace std; 9 /*int next1(int n,int k)10 {11 stringstream ss;12 ss<<(long long)k*k;13 string s=ss.str();14 if(s.length()>n)s=s.substr(0,n);//结果太长,只取前n位15 int ans;16 stringstream ss2(s);17 ss2>>ans;18 return ans;19 }*/20 int buf[100];21 int next2(int n,int k)22 {23 if(!k) return 0;24 long long k2=(long long)k*k;25 int L=0;26 while(k2>0){27 buf[L++]=k2%10;k2/=10;28 }29 if(n>L)n=L;30 int ans=0;31 for(int i=0;i<n;i++)32 ans=ans*10+buf[--L];//把前min{n,L}位重新组合33 return ans;34 }35 /*int main()36 {37 int T;38 cin>>T;39 while(T--)40 {41 int n,k;42 cin>>n>>k;43 set<int>s;44 int ans=k;45 while(!s.count(k))46 {47 s.insert(k);48 if(k>ans)ans=k;49 k=next1(n,k);50 }51 cout<<ans<<endl;52 }53 return 0;54 }55 */56 int main()57 {58 int T;59 cin>>T;60 while(T--)61 {62 int n,k;63 cin>>n>>k;64 int ans=k;65 int k1=k;int k2=k;66 do{67 k1=next2(n,k1);68 k2=next2(n,k2);if(k2>ans)ans=k2;69 k2=next2(n,k2);if(k2>ans)ans=k2;70 }while(k1!=k2);71 cout<<ans<<endl;72 }73 return 0;74 }
假设有两个小孩在一个“可以无限向前跑”的环形跑道上赛跑,同时出发,但其中一个小孩的速度是另一个小孩的速度的2倍,那么跑的快的小孩将追上跑的慢的小孩,
注释掉的代码的时间要更长next1要4秒多,next2要1秒。
阅读全文
0 0
- UVA11549 计算机谜题(Floyd判圈算法)
- UVA11549(Floyd判圈算法)
- UVa11549 - Calculator Conundrum(Floyd判圈算法)
- uva11549 老式计算器 (Floyd判圈 )
- uva 11549计算器谜题(floyd判圈算法)
- USTCOJ1381 老式计算器 uva11549 (Set判重、Floyd判圈)
- Uva11549 模拟判断有环的问题 Floyd判圈算法
- Floyd判圈算法
- Floyd判圈算法
- floyd判圈算法
- Floyd判圈算法
- Floyd 判圈 算法
- Floyd判圈算法
- Floyd判圈算法
- Floyd判圈算法
- floyd判圈算法
- Floyd 判圈算法
- 暴力,STL,哈希技术,Floyd判圈算法(计算器谜题,uva 11549)
- 聊天机器人——智能回复机器人研发
- Android---RecyclerView 刷新与加载更多
- 小程序
- 右值引用与移动构造函数、移动赋值
- #define
- UVA11549 计算机谜题(Floyd判圈算法)
- LwIP BUG之TCP连接丢失
- 获取范围内的随机数
- 关于<c:ForEach/>中属性varStatus的详解
- 关于React.js的一些知识点(实时更新)
- it感悟
- Tensorflow使用slim工具(vgg16模型)实现图像分类与分割
- 运维 10/04 ssh
- 简单理解绝对路径和相对路径