uva11549Calculator Conundrum

题意:有一个老式计算器,只能保存最多n位数,如果结果超出n位,则保留前n位。现在输入一个n和一个k,k表示一个数字,然后不停的求k的平方并令k=k*k,发现会出现循环的结果,求所有结果种最大的一个。

分析:暴力模拟可以过的,但有更好的算法。暴力:用哈希、set都可以。高效算法:Floyd判圈算法,假设两个小孩在有环形的跑道上跑,一个速度为v,另一个速度为2*v,出发点相同,那么总会有相遇的时候,相遇的时候就是跑完一圈了,那么最大值一定跑过了~

代码:

View Code

 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~

时间: 2024-09-24 02:01:04

uva11549Calculator Conundrum的相关文章

UVA之11549 - Calculator Conundrum

[题目] Problem C CALCULATOR CONUNDRUM Alice got a hold of an old calculator that can display n digits. She was bored enough to come up with the following time waster. She enters a number k then repeatedly squares it until the result overflows. When the

uva 11549 - Calculator Conundrum 模拟

      Floyd判圈算法,好厉害的样子       用sscanf要2s,速度太低,不过比较好写,要注意是字符数组要开19以上  /* author:jxy lang:C/C++ university:China,Xidian University **If you need to reprint,please indicate the source** */ #include <iostream> #include <cstdio> #include <cstdlib

uva 11549 - Calculator Conundrum

点击打开链接uva 11549 思路:模拟 分析: 1 题目要求找到最大的n位数,那么我们通过不断的模拟,求出最大的ans 2 这里有个问题就是我们怎么知道什么时候结束呢?我们知道如果当前数已经有出现了那么说明刚好一个循环,这里利用map映射 代码: #include<map> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using names

JavaScript中数据结构与算法(四):串(BF)

  这篇文章主要介绍了JavaScript中数据结构与算法(四):串(BF),串是由零个或多个字符组成的有限序列,又叫做字符串,本文着重讲解了BF(Brute Force)算法,需要的朋友可以参考下 串是由零个或多个字符组成的有限序列,又叫做字符串 串的逻辑结构和线性表很相似的,不同的是串针对是是字符集,所以在操作上与线性表还是有很大区别的.线性表更关注的是单个元素的操作CURD,串则是关注查找子串的位置,替换等操作. 当然不同的高级语言对串的基本操作都有不同的定义方法,但是总的来说操作的本质都

Westworld: Science fiction or distant reality?

The recent HBO science fiction hit Westworld has sparked intense discussions among those in the technology space. The TV series depicts a futuristic theme-park where human guests are accompanied and "entertained" by artificially intelligent, hum

《Photoshop Lab修色圣典(修订版)》目录—导读

版权声明 Photoshop Lab修色圣典(修订版) Dan Margulis: Photoshop Lab Color: The Canyon Conundrum and Other Adventures in the Most Powerful Colorspace(ISBN: 0321356780) Copyright 2006 by Dan Margulis. Authorized translation from the English language edition publis

OpenGL ES From the Ground Up, Part 6: Textures and Texture Mapping

MONDAY, MAY 25, 2009 OpenGL ES From the Ground Up, Part 6: Textures and Texture Mapping An alternative to creating materials in OpenGL ES to define the color of a polygon is to map a texture onto that polygon. This is a handy options that can give yo

全部未注册英文单词.cn和.net未注册分享

according.cn afterward.cn careless.cn contrary.cn democratic.cn despite.cn discourage.cn embarrass.cn eventually.cn furthermore.cn granddaughter.cn grandson.cn ignore.cn incident.cn majority.cn neither.cn ought.cn partly.cn probably.cn quarrel.cn sta

从心理学的角度来看用户体验设计

一个国王带了六个人到了一个昏暗的建筑物里.他们什么都看不见.国王对他们说:"我从荒野中将这只动物带回到东方.他们称之为大象.""什么是大象?"六人问.国王说:"你们摸一下这只大象,然后描速给我听."摸腿的人说大象就像一个柱子,摸尾巴的说大象就像绳子,摸鼻子的说大象就像三个树枝,摸耳朵的说大象就像一把扇子,摸肚子的人说大象就像一面墙,摸象牙的人说大象就像一根硬管子."你们都对了",国王说,"你们每个人只摸到了大象的一部