欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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 计算器谜题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。