当前位置:
首页 >
floyd 判圈算法 UVa 11549 计算器谜题
发布时间:2025/7/14
50
豆豆
生活随笔
收集整理的这篇文章主要介绍了
floyd 判圈算法 UVa 11549 计算器谜题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2544
floyd 判圈算法 参考 http://blog.csdn.net/l03071344/article/details/8707135
前面的solve 求k的最前n位
我之前用的函数是 不晓得为什么不可以。。
int solve(int k,int n) {char ss[100]; sprintf(ss,"%s",k); ss[n]='\0'; sscanf(ss,"%d",&k); return k; }#include<iostream> #include<stdio.h> #include<string.h> #include<set> using namespace std;int solve(int k,int n) {char ss[100];__int64 k2;int l=0;k2=(__int64)k*k;while(k2){ss[l++]=k2%10;k2/=10;}int ans=0,count=0;while(n--&&l--){count++;ans=ans*10+ss[l];}return ans; }int main() {int n,k,ans,k1,k2;int i,j,m,t;scanf("%d",&t);while(t--){set<int> s; //用到容器的时候 总是不记得清空 贡献几次wa 将定义的放在
这里就可以不要清空容器了 不过会很耗空间 还好这里没有超scanf("%d%d",&n,&k);
ans=k;k1=k2=k;do{k1=solve(k1,n);k1=solve(k1,n); if(ans<k1) ans=k1;k2=solve(k2,n); if(ans<k2) ans=k2;}while(k1!=k2);printf("%d\n",ans);}return 0; }
转载于:https://www.cnblogs.com/assult/p/3174273.html
总结
以上是生活随笔为你收集整理的floyd 判圈算法 UVa 11549 计算器谜题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【转】webgame前台开发总结--虽然
- 下一篇: 0050算法笔记——【线性规划】单纯形算