UVa11549 Calculator Conundrum
题意:有一个只能存储长度为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相关推荐
- Calculator Conundrum UVA - 11549(floyd判圈)
Calculator Conundrum UVA - 11549 题意: 给你一个n和k. 每次操作可以把k平方,之后取k*k的前n位 为 k. 思路: 首先可以想到,经过有限次操作后,会出现循环. ...
- UVA之11549 - Calculator Conundrum
[题目] Problem C CALCULATOR CONUNDRUM Alice got a hold of an old calculator that can displayndigits. S ...
- UVA 11549 Calculator Conundrum
原文请訪问我的博客:http://xiaoshig.sinaapp.com/?p=115 Alice got a hold of an old calculator that can display ...
- UVa 11549 Calculator Conundrum
大白书里面的题感觉就是没有什么固定的思路,只能认真理解学习汝佳大大的代码. 这里用的Floyd判圈法,就像插图里面的一样,两个小孩,一个快一个慢,如果实在一个环形跑道,那么快的那个最终一定会" ...
- UVA 11549 模拟 Floyed判圈法的应用 Calculator Conundrum
此题很容易想到会出现环,那么就可以想到用map来判重,但是此题还有一种更加优越的所需空间复杂度为o(1)的算法 . #include<cstdio> #include<iostrea ...
- UVA 11549 Calculator Conundrum
很容看出来,一直平方又只取前面n位会构成循环,所以可以模拟,判重的话就用hash #include <iostream> #include <cstdio> #include ...
- Calculator Conundrum
题意: 给出位数和一个数,求出在位数内的数的次方的最大值 思路: 循环控制条件是得到的数已经得到过,即处理数出现循环,则无须再处理了,所以用到了set,用来判断处理数是否出现过 那截取位数用到了sst ...
- UVa 11549 Calculator Conundrum (训练指南,Floyd 判圈算法)
算法竞赛训练指南, 42 页 注意: 1. 用数组来记录一个数的各位的数字 2. 快慢指针来记录链表环的入点(Floyd 判圈算法) #include <cstdio> #include ...
- UVA 11549 Calculator Conundrum 题解
题解: 题目暗示了计算机显示出的数将出现循环,最直接的方式是一个一个的模拟,并判断新得到的数字是否出现过.最简单的方式是通过数组记录已经出现过的数字,然而题目中 0<=k<=10^9 范围 ...
最新文章
- CentOS(linux) 下JDK的安装
- 我的第一个Windows Phone 7应用程序
- openresty开发系列20--lua的时间操作
- 小米10的Android安全更新,MIUI 12首批更新名单被曝光,小米10系列优先上Android 11...
- nubia android root权限,获取中兴NX403a (Nubia Z5S Mini Android 4.2)ROOT权限教程,新手必看...
- 基础算法学习(二)_二叉树及应用赫夫曼编码
- java 正则提取大于等于号_Java正则表达式
- OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
- 字节跳动斩获支付牌照欲建金融帝国,技术实力配得上野心吗?
- Java判断某年是不是闰年
- vue字符串转时间_vue总结01
- 【2018.6.7】高一总结暑假前
- linux 输入--输出--重定向 stdin/stdout/stderr
- kotlin和python哪个好_对比 Go 语言,Kotlin 有什么优势和劣势?
- Ubuntu 手动更新firefox的flash插件
- 计算机操作系统汤小丹版课后答案
- 苏轼被贬 康震《唐宋八大家之苏轼》
- opensource项目_2020 Opensource.com夏季阅读列表
- android ntfs驱动_如何在Android上读写外部NTFS外部硬盘驱动器和笔式驱动器
- 储存卡误删都能恢复吗?这个方法大家用了都说好
热门文章
- AtCoder Beginner Contest 249题解(E,F)
- Udacity数据分析(进阶试学)-五王之战分析 - 冰与火之歌
- 拾忆Elasticsearch04:Elasticsearch实操
- js一键批量打印_web页面的单页打印以及批量打印实现方法
- 计算机认知矫正发展史,计算机认知矫正疗法对儿童认知功能的影响.pdf
- 我的物联网项目(三十一) 分销模式电商平台
- 节日促销礼品选择的七大注意事项
- 那些让你起飞的计算机基础知识!
- iPhone X(iOS 14.6)在Win 10上使用iRemoval PRO v5.1.2进行越狱
- 【洛谷P3818】小A和uim之大逃离 II