uva 11549 - Calculator Conundrum (Floyd判圈法)
来源:互联网 发布:js禁止浏览器滚动条 编辑:程序博客网 时间:2024/05/29 16:31
题目链接
直接模拟计算过程。 可以看出计算器显示出来的数是循环的,关键在于模拟的过程中,怎样判断是否循环了。
可以采用STL中的map或set,不过效率较低。hash的话耗很大的空间。
从大白上可以知道还有一种叫做“Floyd判圈法”的东西。就是假设有两个小孩子在一个圆圈跑道上赛跑,同时出发,但其中一个小孩的速度是另一个的两倍,所以跑得快的小孩将“追上”跑得慢的小孩(已经超过n圈了)。当超过的那一刻,可以肯定的是,此时快的小孩已经至少跑了1圈以上了,也就是“经过了一个循环”。那么只要模拟跟踪记录快的就可以了。
#include<iostream>#include<cstdio>#include<cstring>#include<set>using namespace std;typedef long long int64;char buf[12];int64 getNext(int n, int64 k){ int64 now = (int64)k*k; int len = 0; int64 tmp = now; while(tmp>0){ ++len; tmp /= 10; } while(len-n > 0) { --len; now /= 10; } return now;}int main(){ int nCase, n; int64 k; scanf("%d", &nCase); while(nCase--){ cin >> n >> k; int64 ans = k; int64 slow=k, fast=k; do{ slow = getNext(n, slow); fast = getNext(n, fast); ans = max(ans, fast); fast = getNext(n, fast); ans = max(ans, fast); } while(slow != fast); cout << ans << endl; } return 0;}
- uva 11549 - Calculator Conundrum (Floyd判圈法)
- Uva 11549 CALCULATOR CONUNDRUM (floyd 判圈法)
- UVa 11549 - Calculator Conundrum(Floyd判圈法)
- UVA 11549 - Calculator Conundrum Floyd判圈法
- uva 11549 Calculator Conundrum(Floyd 判圈法 和 stringstream的应用)
- uva 11549 Calculator Conundrum(floyd判圈)
- floyd判圈算法 (UVA 11549 - Calculator Conundrum)
- UVA Calculator Conundrum 11549 (Floyd判环&数学&高效)
- UVA 11549 Calculator Conundrum Floyd判圈
- UVA 11549-Calculator Conundrum-floyd判重
- Uva-11549 - Calculator Conundrum
- UVA 11549 Calculator Conundrum
- Uva-11549-Calculator Conundrum
- uva 11549 - Calculator Conundrum
- UVA 11549 Calculator Conundrum
- uva 11549 CALCULATOR CONUNDRUM
- UVA 11549 Calculator Conundrum
- UVa 11549 - Calculator Conundrum
- 关于CH376拷贝U盘文件速度的测试比较
- [MSSQL]当月第一个周六
- kernel socket 实例
- uva10487 - Closest Sums
- jQuery简介
- uva 11549 - Calculator Conundrum (Floyd判圈法)
- cacti气象图调整(批量位置调整、更改生成图大小等)
- C++ map的基本操作和使用
- WdatePicker.js
- iPad/iPhone设备的系统常用文件夹的位置以及说明
- android widget 多按钮点击,图片刷新等问题
- MATLAB2维小波变换经典程序
- hibernate+proxool的数据库连接池配置方法
- 命题逻辑中的语法与语义,可靠性与完备性