题意:有一个只能存储长度为n的数字的十进制计算器,给定一个初始值k,每次可以平方一次,求最大能出现的数字。

题解:

方法一:由于有长度限制,而且每次都平方,看起来会出现循环。那么就可以每次暴力乘就行,用hash判重就行。

方法二:既然会出现循环,何尝不如用一个tot记录一下计算了多少次,到达某个上限(1e9 / T)后输出ans。

方法三:神奇的floyd判圈。维护两个变量,步进长分别为1和2,由于会出现循环(也就是出现圈),这两个变量一定会相等,在循环的时候更新一下就行。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>using namespace std;typedef long long ll;ll T, n, k, M, a, b;char str[100];ll nxt(ll x) {x *= x;sprintf(str, "%lld", x);x = 0;ll len = min(n, (ll)strlen(str));for(int i = 0 ; i < len ; i ++) {x = x * 10 + str[i] - '0';}return x;
}int main() {scanf("%lld", &T);while(T --) {scanf("%lld%lld", &n, &k);a = b = k;do {a = nxt(a);b = nxt(b); k = max(k, b);b = nxt(b); k = max(k, b);} while(a != b);printf("%lld\n", k);}
}

  

转载于:https://www.cnblogs.com/KingSann/articles/7418816.html

UVa11549 Calculator Conundrum相关推荐

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

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

  2. UVA之11549 - Calculator Conundrum

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

  3. UVA 11549 Calculator Conundrum

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

  4. UVa 11549 Calculator Conundrum

    大白书里面的题感觉就是没有什么固定的思路,只能认真理解学习汝佳大大的代码. 这里用的Floyd判圈法,就像插图里面的一样,两个小孩,一个快一个慢,如果实在一个环形跑道,那么快的那个最终一定会" ...

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

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

  6. UVA 11549 Calculator Conundrum

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

  7. Calculator Conundrum

    题意: 给出位数和一个数,求出在位数内的数的次方的最大值 思路: 循环控制条件是得到的数已经得到过,即处理数出现循环,则无须再处理了,所以用到了set,用来判断处理数是否出现过 那截取位数用到了sst ...

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

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

  9. UVA 11549 Calculator Conundrum 题解

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

最新文章

  1. CentOS(linux) 下JDK的安装
  2. 我的第一个Windows Phone 7应用程序
  3. openresty开发系列20--lua的时间操作
  4. 小米10的Android安全更新,MIUI 12首批更新名单被曝光,小米10系列优先上Android 11...
  5. nubia android root权限,获取中兴NX403a (Nubia Z5S Mini Android 4.2)ROOT权限教程,新手必看...
  6. 基础算法学习(二)_二叉树及应用赫夫曼编码
  7. java 正则提取大于等于号_Java正则表达式
  8. OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
  9. 字节跳动斩获支付牌照欲建金融帝国,技术实力配得上野心吗?
  10. Java判断某年是不是闰年
  11. vue字符串转时间_vue总结01
  12. 【2018.6.7】高一总结暑假前
  13. linux 输入--输出--重定向 stdin/stdout/stderr
  14. kotlin和python哪个好_对比 Go 语言,Kotlin 有什么优势和劣势?
  15. Ubuntu 手动更新firefox的flash插件
  16. 计算机操作系统汤小丹版课后答案
  17. 苏轼被贬 康震《唐宋八大家之苏轼》
  18. opensource项目_2020 Opensource.com夏季阅读列表
  19. android ntfs驱动_如何在Android上读写外部NTFS外部硬盘驱动器和笔式驱动器
  20. 储存卡误删都能恢复吗?这个方法大家用了都说好

热门文章

  1. AtCoder Beginner Contest 249题解(E,F)
  2. Udacity数据分析(进阶试学)-五王之战分析 - 冰与火之歌
  3. 拾忆Elasticsearch04:Elasticsearch实操
  4. js一键批量打印_web页面的单页打印以及批量打印实现方法
  5. 计算机认知矫正发展史,计算机认知矫正疗法对儿童认知功能的影响.pdf
  6. 我的物联网项目(三十一) 分销模式电商平台
  7. 节日促销礼品选择的七大注意事项
  8. 那些让你起飞的计算机基础知识!
  9. iPhone X(iOS 14.6)在Win 10上使用iRemoval PRO v5.1.2进行越狱
  10. 【洛谷P3818】小A和uim之大逃离 II