Calculator Conundrum UVA - 11549(set或Floyd判圈法)

低代码Agent开发框架使用指南(二)—Coze平台核心功能概览 本篇分享系统介绍了字节跳动推出的低代码智能体开发平台Coze。Coze以免费易用、多模型支持和便捷的跨平台发布为核心优势,显著降低了智能体开发门槛。文章详细解析了平台的六大核心功能:扩展能力边界的插件系统、增强认知的知识库、结构化数据管理的数据库、可视化图像处理的图像流、实现复杂逻辑编排的工作流,以及处理复杂任务的多智能体协作机制,全面展现了Coze平台的强大能力。 阅读详情

Calculator Conundrum

UVA - 11549

题意:有个老式计算器,每次只能记住一个数字的前n位。现在输入一个整数k,然后反复平方,一直做下去,能得到的最大数是多少。例如,n=1,k=6,那么一次显示:6,3,9,1...

思路:这个题一定会出现循环,所以一个个模拟,遇到相同的就再之前所有数中找最大的输出即可。

怎么判断遇到相同的呢?如果装在数组里一一比较显然很慢,如果用v[k]判断k是否出现过,k范围太大空间不够用。


方法1.使用set:

code:


#include <iostream>
#include <set>
using namespace std;
int T,n,k;

int Next(int x){//求平方后的数
    if(!k)return 0;//如果k一开始为0,平方后都是0
    int buf[20],i = 0;
    long long t = (long long)x*x;//平方
    while(t){
        buf[i++] = t%10;
        t /= 10;
    }//把每一位储存到数组中(注意这样是倒着的)
    int ans = 0;
    int j;
    for(j = 1; j <= min(n,i); j++)
        ans = ans*10 + buf[i-j];//从高位开始求n位的数
    return ans;
}

int main(){
    cin >> T;
    while(T--){
        cin >> n >> k;
        set<int>S;
        while(!S.count(k)){//利用Set集合判断,因为set不能重复且有序
            S.insert(k);
            k = Next(k);
        }
        cout << *(--S.end()) << endl;
    }
    return 0;
}

方法二:floyd判圈法

算法描述

如果有限状态机、迭代函数或者链表存在环,那么一定存在一个起点可以到达某个环的某处(这个起点也可以在某个环上)。

初始状态下,假设已知某个起点节点为节点S。现设两个指针t和h,将它们均指向S。

接着,同时让t和h往前推进,但是二者的速度不同:t每前进1步,h前进2步。只要二者都可以前进而且没有相遇,就如此保持二者的推进。当h无法前进,即到达某个没有后继的节点时,就可以确定从S出发不会遇到环。反之当t与h再次相遇时,就可以确定从S出发一定会进入某个环,设其为环C。

如果确定了存在某个环,就可以求此环的起点与长度。

模板样例:

    void solve()  
    {  
        read_case();  
        int ans = k;  
        int count = 0;  
        int k1 = k, k2 = k;  
        do  
        {  
            k1 = next(n, k1);  
            k2 = next(n, k2); if(k2 > ans) ans = k2;  
            k2 = next(n, k2); if(k2 > ans) ans = k2;  
            //count++; //算出循环节   
        }while(k1 != k2);  
        printf("%d\n", ans); //printf("%d\n", count);  
    }  


code:

#include <iostream>
#include <set>
using namespace std;
int T,n,k;

int Next(int x){//求平方后的数
    if(!k)return 0;//如果k一开始为0,平方后都是0
    int buf[20],i = 0;
    long long t = (long long)x*x;//平方
    while(t){
        buf[i++] = t%10;
        t /= 10;
    }//把每一位储存到数组中(注意这样是倒着的)
    int ans = 0;
    int j;
    for(j = 1; j <= min(n,i); j++)
        ans = ans*10 + buf[i-j];//从高位开始求n位的数
    return ans;
}

int main(){
    cin >> T;
    while(T--){
        cin >> n >> k;
        int ans = max(k,Next(k));
        int k1 = k,k2 = Next(k);
        while(k1 != k2){
            k1 = Next(k1);
            k2 = Next(k2);
            if(k2 > ans)
                ans = k2;
            k2 = Next(k2);
            if(k2 > ans)
                ans = k2;
        }
        cout << ans << endl;
    }
    return 0;
}




【雷达成像】基于matlab SAR雷达成像仿真【含Matlab源码 3750期】 SAR雷达成像仿真 完整的代码,方可运行;可提供运行操作视频!适合小白! 阅读详情

相关推荐

Android 导出aar 用于Unity 百度语音唤醒

AndroidStudio版本下载地址Android Studio Arctic Fox Unity版本2021.3.26f1c1 新建AndroidStudio工程 新建module 这里注意一下,网上很多教程说要注意包名要和unity一样,但是测试下来,不一样也可以的 在新建的module里添加这两个jar包,并点击右键add as library 导入jniLibs 右键创建这几个package 代码就安装这个大佬的写参考代码 需要注意的的是在WakeupListener脚本里U

weixin_38777563的博客 633

uva 11549 - Calculator Conundrum (Floyd判圈法)

题目链接 直接模拟计算过程。 可以看出计算器显示出来的数是循环的,关键在于模拟的过程中,怎样判断是否循环了。 可以采用STL中的map或set,不过效率较低。hash的话耗很大的空间。 从大白上可以知道还有一种叫做“Floyd判圈法”的东西。就是假设有两个小孩子在一个圆圈跑道上赛跑,同时出发,但其中一个小孩的速度是另一个的两倍,所以跑得快的小孩将“追上”跑得慢的小孩(已经超过n圈了)

D_Double's Journey 1452

脑影像分析软件推荐 | JuSpace

JuSpace是一种允许基于 MRI 测量与核成像衍生估计的跨模态关联的工具包,它涵盖各种神经递质系统,包括多巴胺能、血清素能、去甲肾上腺素能和 GABA(γ-氨基丁酸) 神经传递。JuSpace 由一组 Matlab 功能以及涵盖各种受体系统的 PET 受体图谱组成。

NHKJ_ZF的博客 1706

uva11549 Calculator Conundrum【解法一】

模拟+哈希

YHaX的博客 874

axi ps读写pl_PL读写DDR:Datamover能干什么

最近发现工程项目中一直在用AXI-DMA。这玩意儿搬数据倒是没问题,就是用axi-lite配置起来非常反人类。。。简单的办法其实是用datamover ip核。这个ip核能干嘛呢。准备写个文章解析一下。由于好多feature没用过,所以仅仅看文档可能理解有误,欢迎指出错误。首先扫个盲:MM2S指的是Memory map to stream. 读DDR. S2MM指的是steam to memory...

weixin_35908791的博客 1595

llama.cpp 参数调优大全(4060 最优配置)

本文针对NVIDIA RTX 4060(8GB显存)显卡,提供了llama.cpp参数调优的实战指南。核心策略是采用小模型(7B/8B)配合Q4_K_M量化,通过合理设置GPU层数(-ngl 28)、上下文长度(-c 2048)和批量大小(-b 512)来平衡性能和显存占用。重点推荐启用flash-attn加速和mlock内存锁定,并给出标准、高性能和保守三种配置方案。调优优先级为:GPU利用率>吞吐量>显存>线程数,同时警示避免常见错误如过大上下文或GPU层数设置。最终推荐4060最佳配置为7B Q4_

刘一说的IT专栏 3402

uva 11549 - Calculator Conundrum(模拟)

题目链接:uva 11549 - Calculator Conundrum 题目大意:给出n和k,表示有一个n为的计算器,现在要计算k一直平方中的最大值(在计算器中出现的),超过n位取前n位。 解题思路:看队友题解上有一个判断说形成循环的条件a^2== b^4。然后模拟一下就可以了。 #include &lt;stdio.h&gt; #include &lt;string...

xiaoheliushuiya 172

第四节:Vben Admin登录对接后端getUserInfo接口

上一节,我们完成了/api/auth/login接口的创建,通过login接口,我们完成了登录和Token的生成。但是登陆还是报404返回,发现是Vben Admin又请求了一个/api/getUserInfo接口,本节我们就来分析完成这个接口本节,我们完成了getUserInfo接口,完成了登录操作,成功的进入到工作台页面。

cuiwin的专栏 2845

CALCULATOR CONUNDRUM

//判圈法 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //

霁月难逢 彩云易散 427

4、海洋哺乳动物运动能量学:潜水与生存的奥秘

本文深入探讨了海洋哺乳动物在潜水与运动中的能量消耗机制,涵盖其生理反应、代谢成本、节能行为策略及测量方法。通过分析不同物种的能量利用特点,揭示了它们如何在极端水下环境中维持能量平衡,并讨论了该研究在保护生物学、生态系统动态和动物健康管理中的实际意义。文章还展望了未来多学科交叉、长期监测及应对环境变化的研究方向,为理解海洋哺乳动物的生存奥秘提供了系统性视角。

p5l2m9n4o6q的博客 116

Android 13.0 framework默认沉浸式导航栏功能实现

​ 在13.0的系统rom定制化开发中,在实现导航栏的某些定制化开发中,在某些产品需要实现沉浸式导航栏,就是需要app 能全屏显示同样也能显示导航栏,接下来就来分析下相关的功能实现 ​

安卓兼职framework和app工程师的博客 467

11549 - Calculator Conundrum(水题)

很简单的水题,显然是有循环的,只要循环回出现过的数字就不必再继续平方了。 细节参见代码: #include using namespace std; typedef unsigned long long ll; const int maxn = 1000; ll T,n,m,k; int main() { scanf("%d",&T); while(T--) {

AC_Arthur的专栏 627

4、硬件工程师笔试面试知识器件篇——电阻(2025版本)

本文系统介绍了电阻的基础知识与应用。首先阐述了电阻的定义、工作原理及类型(固定/可变电阻),详细说明了常见电阻材料(碳膜、金属膜、线绕等)的特性与标记方法。重点分析了电阻在电路设计中的关键参数:功率计算需考虑1.5-2倍安全裕度,温度系数影响电路稳定性。文章还对比了不同封装形式(轴向/贴片/功率封装等)的适用场景,特别强调高功率电路需选择专用封装并做好散热设计。最后指出电路仿真可优化电阻选择,并列举了相关电子元件在设计中同样需要仿真验证。全文为硬件工程师提供了电阻选型的实用指导。

XU157303764的博客 5203

Calculator Conundrum UVA - 11549 计算器谜题 Floyd判圈算法

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 ...

Nicolas的博客 534

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

uva 11549 Calculator Conundrum(floyd判圈)

uva 11549 题意:有个老式计算器,每次只能记住一个数字的前n位。现在输入一个整数k,然后反复平方,一直做下去,能得到的最大数是多少。例如,n=1,k=6,那么一次显示:6,3,9,1... 题解:重复下去必然会重复,可以利用set结构保存是否出现过这个数,更可以利用floyd判圈算法 Floyd算法:两个指针p1,p2.最开始先全都指向链表头,p2移动的速度比p1快一倍,

Ezereal的博客 626

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

UVA 11549 Calculator Conundrum (Floyd判圈算法)

UVA 11549 Calculator Conundrum (Floyd判圈算法) 分类: 思路独特2013-08-12 16:23 230人阅读 评论(0) 收藏 举报 uva优化Floyd算法 题意:有个老式计算器,每次只能记住一个数字的前n位。现在输入一个整数k,然后反复平方,一直做下去,能得到的最大数是多少。例如,n=1,k=6,那么一次显示:6,3,9,1

pi9nc的专栏 1645

Calculator Conundrum UVA - 11549

问题 https://vjudge.net/problem/UVA-11549 分析 使用map或者unordered_map进行查重,如果重复就跳出循环,注意数据的类型,防止溢出 在这里插入代码片

zpf1998的博客 198

【Floyd判圈算法】UVa11549Calculator Conundrum

题目链接 该题在《训练指南》中有,这一道不错的题。 题目描述:对一个数kk,取k∗kk*k的前nn个数。无限操作下去。求其中出现的最大值。 数据范围:1<=n<=91<=n<=9,0<=k<10n0<=k<10^n首先肯定会出现循环,只有10n10^n个数。 如何判环决定了耗时的多少。算法一:用STL中的set set版,耗时823823ms#include <cstdio> #inclu

蒟蒻的奋斗史 454

UVa11549:Calculator Conundrum

UVa11549:Calculator Conundrum 题目大意 有一个老旧的计算器只能显示前n个数字。现在给定一个数字k,每次给k平方,如果答案长度超过n则从最高位开始显示n个数字,丢弃其余数字。 要求:求出计算器能显示的最大数字。 Solution1(naive) 本题中得到的数列会出现循环,可以用一个set记录所有得到的数字,一旦出现重复数字停止循环,输出set中的最大值即可。 A...

weixin_30408675的博客 137

uva 11549 Calculator Conundrum

uva 11549 题意:你拥有一个老式计算机,它只能显示n为数字,有一天你输入数字k,接着一直平方下去,在这个过程中如果数字长度大于n,那么截取前n个数形成一个新的数k,再用这个新的数k一直平方下去,那么这个过程中能显示的最大数字是多少。 思路:在这个过程如果出现了以前出现过的数,那么从第一个开始到这个数就是一个循环节,后面的也与这个节一模一样,因为都是针对一个数字执行同一种操作。 ...

weixin_33829657的博客 100

UVA 11549 - Calculator Conundrum

这题可以用C++里的SET做,但是需要很大的空间,而且时间效率也低了点,

709

UVA之11549 - Calculator Conundrum

【题目】 Problem C CALCULATOR CONUNDRUM Alice got a hold of an old calculator that can displayndigits. She was bored enough to come up with the following time waster. She enters a numberkthen re...

SmartSi 373

uva 11549 Calculator Conundrum(Floyd 判圈法 和 stringstream的应用)

/*题意就是给出整数n和k n表示这个计算器能显示的位数 k表示要计算的数字 要算k的平方 结果取高n位 再平方 再取高n位 求这个过程最大的值是多少 那么这个过程必然是循环的 stringstream虽然慢 但是一种不错的方法 还有floyd判圈法 就是两个小孩 一个速度是另一个的两倍 当第一个小孩跑了n步 也就是一个循环节的时候 第二个已经跑了2n 两个循环节 这时候他俩相等了 都等于初始的那

百度啊百度 631

UVA 11549 Calculator Conundrum

用到了C++的set表。 STL是个好东西啊,得好好学。 简单的来说set就是个集合。 set s用s.count(x)来判断x是否存在,或者用s.find(k)==s.end()(不存在,find不存在返回end迭代器) 因为要取前n为,我就计算temp的位数cnt,然后/cnt-n即可。运行时间为1.199S 而书上的方法更简单,逐位存入数组中。运行时间为1.016

细语呢喃 800

Calculator Conundrum

题意: 给出位数和一个数,求出在位数内的数的次方的最大值 思路: 循环控制条件是得到的数已经得到过,即处理数出现循环,则无须再处理了,所以用到了set,用来判断处理数是否出现过 那截取位数用到了sstream s > ans, 将字符串转为数字 代码: #include #include #include using namespace std; int k, n; int next(

deepquiet的博客 395
上一篇: Legal or Not HDU - 3342(强连通分量)
下一篇: 最小正子段和 51Nod - 1065
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值