uva11549Calculator Conundrum
题意:有一个老式计算器,只能保存最多n位数,如果结果超出n位,则保留前n位。现在输入一个n和一个k,k表示一个数字,然后不停的求k的平方并令k=k*k,发现会出现循环的结果,求所有结果种最大的一个。
分析:暴力模拟可以过的,但有更好的算法。暴力:用哈希、set都可以。高效算法:Floyd判圈算法,假设两个小孩在有环形的跑道上跑,一个速度为v,另一个速度为2*v,出发点相同,那么总会有相遇的时候,相遇的时候就是跑完一圈了,那么最大值一定跑过了~
代码:
1 #include <stdio.h> 2 #include <iostream> 3 #define DEBUG 4 using namespace std; 5 int buf[10]; 6 int next(int n, int k){ 7 if(k==0) return 0; 8 long long k2 = (long long)k*k; 9 int len = 0; 10 while(k2>0){ 11 buf[len++]=k2%10; 12 k2/=10; 13 } 14 if(n>len) n=len; //k很小、n很大的情况 15 int ans=0; 16 for(int i=0; i<n; i++){ 17 ans = ans*10 + buf[--len]; 18 } 19 return ans; 20 } 21 int main(){ 22 #ifndef DEBUG 23 freopen("in.txt", "r", stdin); 24 #endif 25 int cas; 26 scanf("%d", &cas); 27 while(cas--){ 28 int n, k; 29 scanf("%d%d", &n, &k); 30 int k1=k, k2=k, ans=k; 31 while(true){ 32 k1 = next(n, k1); 33 k2 = next(n, k2); 34 if(ans<k2) ans=k2; 35 k2 = next(n, k2); 36 if(ans<k2) ans=k2; 37 38 if(k1==k2) break; 39 } 40 printf("%d\n", ans); 41 } 42 return 0; 43 }
# | Problem | Verdict | Language | Run Time | Submission Date | |
11274827 | 11549 | Calculator Conundrum | Accepted | C++ | 0.524 | 2013-02-11 07:35:50 |
记录一下~只用了0.5s~
转载于:https://www.cnblogs.com/zjutzz/archive/2013/02/11/2910019.html
uva11549Calculator Conundrum相关推荐
- CodeForces - 1567C Carrying Conundrum(思维/状压)
题目链接:点击查看 题目大意:规定加法中使用隔项进位,问给定的 nnn 有多少种方案可以通过 "隔项进位加法" 得到 题目分析:隔项进位意味着奇偶位置的数字互不影响,所以将奇偶位置 ...
- CF 1567 C. Carrying Conundrum(思维)
CF 1567 C. Carrying Conundrum(思维) 题目大意: 题目大意很有意思,就是一个小孩他不会列式相加,把进位加到了该位左侧的第二位上,现在给出结果,问按照这个小孩的方法,能有多 ...
- Codeforces Round #742 (Div. 2) C. Carrying Conundrum
目录 题目: Input Output Example 解析 AC代码 题目: C. Carrying Conundrum time limit per test2 seconds memory li ...
- Carrying Conundrum(思维)
题目 Carrying Conundrum 问题描述 定义一种特殊加法计算: 上式为正常加法计算,下式为特殊加法计算,特殊之处在于进位将会跳跃一位相加, 比如应该进位到十位的1进位到了百位,应该进位到 ...
- Calculator Conundrum UVA - 11549(floyd判圈)
Calculator Conundrum UVA - 11549 题意: 给你一个n和k. 每次操作可以把k平方,之后取k*k的前n位 为 k. 思路: 首先可以想到,经过有限次操作后,会出现循环. ...
- codeforces 1567 C. Carrying Conundrum
本场比赛其他题目的题解 A. Domino Disaster B. MEXor Mixup C. Carrying Conundrum D. Expression Evaluation Error E ...
- UVA之11549 - Calculator Conundrum
[题目] Problem C CALCULATOR CONUNDRUM Alice got a hold of an old calculator that can displayndigits. S ...
- C. Carrying Conundrum(思维)
C. Carrying Conundrum(思维) 题意 小明不知道如何列竖式计算,每次计算将进位往左移了一位,要求算出存在多少对数对(a,b)使得其按照小明列竖式的方法能求出目标数字 以下是小明的计 ...
- Coprime Conundrum 容斥原理
https://www.hackerrank.com/contests/hourrank-13/challenges/arthur-and-coprimes 我们可以枚举每一个p在[2, sqrt(n ...
- UVa 11549 Calculator Conundrum
大白书里面的题感觉就是没有什么固定的思路,只能认真理解学习汝佳大大的代码. 这里用的Floyd判圈法,就像插图里面的一样,两个小孩,一个快一个慢,如果实在一个环形跑道,那么快的那个最终一定会" ...
最新文章
- 区块链BaaS云服务(35)亦笔科技ODRChain使用场景
- hadoop namenode启动不了_Hadoop框架:HDFS高可用环境配置
- BOI 2003 Problem. Spaceship
- 【线上圆桌 - 263】视频会议终端到终端的加密
- 简单表单提交php教程,PHP 表单数据提交与接收 超级简单《SSS教程 10》
- Mybatis中trim的使用
- 为什么不用小驼峰也能查到数据库数据_为什么不用驼峰命名创建表名和字段?...
- POJ 1797 Heavy Transportation 最短路变形(dijkstra算法)
- Java那些事之Log4j
- 如果开心,就跟着心走吧……
- war 包,在Windows环境,如何解压
- 简历制作-技术栈和项目经历如何写?
- 服务器搬迁方案_服务器搬迁方案
- 云计算机什么意思啊,什么叫云计算,云计算是什么,最通俗的解释是这样的
- mysql create 无法使用_[转载]mysqlcreate新建用户host使用%,本地无法连接原因及解决方法 WesTward...
- 移动网络怎么修改服务器地址,移动宽带怎么修改wifi密码?
- MySQL之Innodb引擎的4大特性
- Golang的单引号、双引号与反引号用法
- 转:据说什么都能查到网址大全
- 如何检验有调节的中介作用?