大白书里面的题感觉就是没有什么固定的思路,只能认真理解学习汝佳大大的代码。

这里用的Floyd判圈法,就像插图里面的一样,两个小孩,一个快一个慢,如果实在一个环形跑道,那么快的那个最终一定会“追上”慢的那个。

明显这里还是有重复计算的部分,但相对其他算法来说还是比较高效的吧,我猜。。

6s的题居然只用了0.5s,Orz

 1 //#define LOCAL
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cstring>
 5 using namespace std;
 6
 7 int buf[100];
 8
 9 int next(int n, int k)
10 {
11     if(k == 0)
12         return 0;
13     long long k2 = (long long)k * k;
14     int L = 0;
15     while(k2 > 0)
16     {
17         buf[L++] = k2 % 10;
18         k2 /= 10;
19     }
20     if(L < n)
21         n = L;
22     int ans = 0;
23     for(int i = 0; i < n; ++i)
24         ans = ans * 10 + buf[--L];
25     return ans;
26 }
27
28 int main(void)
29 {
30     #ifdef LOCAL
31         freopen("11549in.txt", "r", stdin);
32     #endif
33
34     int T;
35     scanf("%d", &T);
36     while(T--)
37     {
38         int n, k;
39         scanf("%d%d", &n, &k);
40         int ans = k;
41         int k1, k2;
42         k1 = k2 = k;
43         do
44         {
45             k1 = next(n, k1);
46             k2 = next(n, k2);
47             if(k2 > ans)
48                 ans = k2;
49             k2 = next(n, k2);
50             if(k2 > ans)
51                 ans = k2;
52         }while(k2 != k1);
53         printf("%d\n", ans);
54     }
55     return 0;
56 }

代码君

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/3887239.html

UVa 11549 Calculator Conundrum相关推荐

  1. UVA 11549 Calculator Conundrum

    原文请訪问我的博客:http://xiaoshig.sinaapp.com/?p=115 Alice got a hold of an old calculator that can display  ...

  2. UVA 11549 Calculator Conundrum

    很容看出来,一直平方又只取前面n位会构成循环,所以可以模拟,判重的话就用hash #include <iostream> #include <cstdio> #include ...

  3. UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)

    算法竞赛训练指南, 42 页 注意: 1. 用数组来记录一个数的各位的数字 2. 快慢指针来记录链表环的入点(Floyd 判圈算法) #include <cstdio> #include ...

  4. UVA 11549 Calculator Conundrum 题解

    题解: 题目暗示了计算机显示出的数将出现循环,最直接的方式是一个一个的模拟,并判断新得到的数字是否出现过.最简单的方式是通过数组记录已经出现过的数字,然而题目中 0<=k<=10^9 范围 ...

  5. UVa 11549 - Calculator Conundrum

    題目:計算k^2^m中,前n位構成的最大數字. 分析:數論,循環.找尋環節不斷的計算k^2^m和k^4^m相等時即為循環節. 說明:也可以使用map檢測循環╮(╯▽╰)╭. #include < ...

  6. UVA之11549 - Calculator Conundrum

    [题目] Problem C CALCULATOR CONUNDRUM Alice got a hold of an old calculator that can displayndigits. S ...

  7. UVA 11549 calcular conundrum 计算机老谜题

    题目大意 用一个老式计算器,只显示n位数字,输入一个整数k后计算,计算器会反复平方,直至溢出,每次溢出只显示最高的n位,计算器会一直平方下去,直到出现重复的数字 分析 题目中已经暗示了计算器显示的数会 ...

  8. Calculator Conundrum UVA - 11549(floyd判圈)

    Calculator Conundrum UVA - 11549 题意: 给你一个n和k. 每次操作可以把k平方,之后取k*k的前n位 为 k. 思路: 首先可以想到,经过有限次操作后,会出现循环. ...

  9. UVA 11549 模拟 Floyed判圈法的应用 Calculator Conundrum

    此题很容易想到会出现环,那么就可以想到用map来判重,但是此题还有一种更加优越的所需空间复杂度为o(1)的算法 . #include<cstdio> #include<iostrea ...

最新文章

  1. linux中添加PHP的mongoDB支持扩展
  2. 使用ImageMagick 在图片上绘制粗斜体的中文也许是一个错误。
  3. 亚马逊训练alexa的方法_Alexa对话是AI驱动的对话界面新方法
  4. python连接postgresql数据库
  5. ca开头的车是什么牌子_微电调研 | 把高速车摘了牌子当低速车卖还很普遍
  6. Redis进阶实践之十六 Redis大批量增加数据
  7. c++位运算_最全位运算总结
  8. 天锐绿盾加密软件常见问题解决方案
  9. 传奇修改map地图教程_传奇服务端内NPC添加MAP地图说明
  10. 云队友丨巴菲特是怎样炼成的?两万字长文深度起底股神的传奇人生
  11. 贯彻落实83号文,超图“互联网+不动产”再升级
  12. Excel 2010 SQL应用066 返回数字与文本混杂的数据
  13. 蓝雪花怎么养 蓝雪花养殖方法及注意事项
  14. 攻防演练场景中的加密流量检测技术
  15. java.lang.IllegalArgumentException: Not an managed type
  16. 【MySQL·水滴计划】第三话- SQL的基本概念
  17. mysql免安装版安装教程
  18. S7-200 PC ACCESS关于“An error has occured”的错误解决指南合集
  19. 为什么你的简历没人看?7份案例分析(收藏)
  20. Win10远程连接,出现身份验证错误。远程计算机要求的函数不受支持 这可能是由于CredSSP加密Oracle修正 。

热门文章

  1. 怎么用PHP建立购物网站,如何使用PHP建设一个购物网站
  2. 安装JAVA8要登录_JDK8的安装及环境配置
  3. NXP KW38蓝牙开发(一)入门第一课:官网蓝牙广播和连接例程,NMI禁止
  4. “精彩极了”和“糟糕透了”
  5. centos 多个mysql数据库_CentOS6.5 一台服务器同时安装多个Mysql数据库
  6. 【C++grammar】代理构造、不可变对象、静态成员
  7. python 生成器表达式_Python中的列表理解与生成器表达式
  8. php的create_function、function_exists判断函数是否存在
  9. 如何禁用win7的ASLR
  10. No module named 'Tkinter'