如何得到长整数逆序后的整数

目录

  • 一 如何得到长整数逆序后的整数

注:原创不易,转载请务必注明原作者和出处,感谢支持!

一 如何得到长整数逆序后的整数

最近在写代码遇到这样一个问题:如何得到得到一个长整型数逆序后的长整型数?比如输入输入\(a = 12345678\),得到输出\(ra=87654321\)

如下图,仔细分析输入数的特点,可以得到一个简单的递归算法来解决这个问题。

1333489-20190608173046818-2098933808.png

注:做图的时候最后倒数第二行少了加号

void reverse(unsigned long a, unsigned long *sum, unsigned long power)
{if (a > 10)reverse(a/10, sum, power/10);*sum += (a % 10) * power;
}unsigned long get_reverse(unsigned long a)
{/* 根据a的位数确定最大位权值 */int i;unsigned long power = 1;char buf[16];sprintf(buf, "%lu", a);for (i = 0; i < strlen(buf) - 1; i++)power *= 10;/* 调用reverse() */unsigned long sum = 0;reverse(a, &sum, power);return sum;
}

回过头来想上面的代码,会发现既然借用sprintf()能够轻而易举地将\(a\)的最大位权值计算出来,那为何还用采用递归这种低效的计算方式呢?于是,一种效率更好一点的,可以避免递归的算法可以实现如下。

unsigned long get_reverse(unsigned long a)
{/* 根据a的位数确定最大位权值 */int i;unsigned long power = 1;char buf[16];sprintf(buf, "%lu", a);for (i = 0; i < strlen(buf) - 1; i++)power *= 10;unsigned long sum = 0;for (i = strlen(buf) - 1; i >= 0; i--){sum += (buf[i] - '0') * power;power /= 10;}return sum;
}

上述代码的复杂度为:\(O(strlen(a)) = O(log~a)\)。更进一步,还有没有效率更高的算法能够解决这个问题呢?

转载于:https://www.cnblogs.com/laizhenghong2012/p/10991202.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python网页表格读取_是否可以读取网页html表格数据?

我目前正在考虑一些自动读取网页数据。因此&#xff0c;有没有可能从网页中读取以下类型的表格&#xff1a;excel应该有一个值name of condion,Operator and Expressions。在编辑>>> from urllib import urlopen>>> from bs4 import BeautifulSoup>>&g…

matlab exist()判断目录文件是否存在

if exist(abc.doc,file)0error(display(文件不存在));end判断当前目录中是否存在x文件夹&#xff0c;若不存在则创建if exist(x,dir)0mkdir(x);end

20190608笔试题のCSS-属性继承

以下的CSS属性哪些可以继承&#xff1f;&#xff08;单选&#xff09; A. font-sizeB. marginC. widthD. padding emmm&#xff0c;这题答案是A&#xff0c;看到这题我是能选对的&#xff0c;但又不由让我想到一件事情&#xff0c;在全部的CSS属性里有哪些是不可被继承…

群晖套件来源_群晖安装IPKG包管理器及第三方社区安装包步骤

运行环境为群晖DS1517&#xff0c;系统版本为DSM6.2.3。群晖虽然是基于Linux开发的&#xff0c;但与Red Hat或者Ubuntu这样的公开发行版不同&#xff0c;群晖除了官方的图形化包管理器外&#xff0c;并没有提供类似yum或者apt-get等类似包管理器。为了通过命令行安装诸如nano 等…

tf.app.flags和tf.app.run的使用

tf.app.flags和tf.app.run的使用 tf.app.flags主要用于处理命令行参数的解析工作&#xff0c;其实可以理解为一个封装好了的argparse包&#xff08;argparse是一种结构化的数据存储格式&#xff0c;类似于Json、XML&#xff09;。 我们通过tf.app.flags来调用这个flags.py文件…

redis 持久化性能_高性能持久消息

redis 持久化性能总览 尽管有许多可用于Java的高性能消息传递系统&#xff0c;但大多数都避免引用基准&#xff0c;包括持久消息传递和消息的序列化/反序列化。 这样做有多种原因。 1&#xff09;您并不总是需要或想要持久消息2&#xff09;您希望使用自己的序列化选项。 避免使…

python标签使用教程_怎样用Python做标签云

怎样用Python做标签云标签云是比较直观的频率分布表现方式&#xff0c;很多网站和APP在年度盘点和总结时会使用。Python生成标签云有一个比较易用的库 pytagcloud。Python做标签云的具体方法如下&#xff1a;1、导入头文件from pytagcloud import create_tag_image, make_tagsf…

057-while循环

<?php$x1; //初始化变量while($x<5){ //执行while循环echo "$x<br />";$x;} ?> 转载于:https://www.cnblogs.com/tianpan2019/p/10995180.html

OpenCV显示中文汉字,未使用CvxText和FreeType库

OpenCV显示中文汉字&#xff0c;未使用CvxText和FreeType库 采用windows的GDI显示系统的TrueType字体&#xff0c;没有封装&#xff0c;就两个函数&#xff0c;分成了h和cpp文件&#xff0c;可以自己编辑文件名和函数名&#xff0c;亦可以直接将cpp的代码复制到你需要的程序中…

使用Arquillian测试Spring Data + Spring Boot应用程序(第1部分)

Spring Data的使命是为数据访问提供一个熟悉且一致的&#xff0c;基于Spring的编程模型&#xff0c;同时仍保留基础数据存储的特​​殊特征。 它提供了与一些后端技术的集成&#xff0c;例如JPA&#xff0c;Rest&#xff0c;MongoDB&#xff0c;Neo4J或Redis。 因此&#xff0…

生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...

经常听到小伙伴问到生日祝福视频怎么做&#xff0c;当然我想既然要为他人做生日祝福视频&#xff0c;那么这个人必定是自己身边比较重要的人&#xff0c;而生日又是每个人都是非常重要的&#xff0c;在这种充满意义的时刻&#xff0c;我们想给自己极其重要的人送上一份祝福&…

putty WinScp 免密登录远程 Linux

该方法的原理是预先生成一对公钥和私钥&#xff0c;私钥以文件的形式保存在本地&#xff0c;公钥保存在远程机器上。这样每次登录只需指定私钥文件&#xff0c;远程机器通过比对公钥和私钥来验证登录的合法性。 Putty 免密登录 第一步 生成公钥/私钥对 使用 putty 安装目录中的…

tensorflow log 日志级别设置

log 日志级别设置 import os os.environ["TF_CPP_MIN_LOG_LEVEL"]1 # 这是默认的显示等级&#xff0c;显示所有信息 os.environ["TF_CPP_MIN_LOG_LEVEL"]2 # 只显示 warning 和 Error os.environ["TF_CPP_MIN_LOG_LEVEL"]3 # 只显示 Error

springcloud微服务实战--笔记--1、基础知识

微服务的问题&#xff1a; 分布式事务和数据一致性。 由于分布式事务本身第实现难度就非常大&#xff0c;所以在微服务架构中&#xff0c;我们更强调在各服务之间进行无事务第调用&#xff0c;而对于数据一致性&#xff0c;只要求数据在最后第处理状态是一致第即可&#xff1b;…

OpenCV imwrite

imwrite(const string& filename, InputArray img, const vector<int>& paramsvector<int>() ) 1、filename:需要写入的文件名&#xff0c;会自己创建&#xff08;像imwrite("1.jpeg",src);这样&#xff09; 2、img:要保存的图像 3、pa…

配置Jenkins以连续交付Spring Boot应用程序

在我以前的文章中&#xff0c;我描述了如何使用一个简单的命令启动连续交付堆栈 。 下一步是准备堆栈&#xff0c;以自动方式构建和部署应用程序。 在这篇文章中&#xff0c;我描述了如何配置堆栈&#xff0c;以便准备处理简单的Spring Boot应用程序 。 尽管我将这些组件作为Do…

虚拟鼠标代替安卓触屏_美术学院18级虚拟空间设计专业数字图像程序基础课程优秀结课成果展示优秀学生王雨禾作品展示...

学生代表&#xff1a;STUDENT REPRESENTATIVE|2018级虚拟空间设计专业 王雨禾此次编程课程的学习&#xff0c;让我受益匪浅&#xff0c;短短八周的时间&#xff0c;使我进一步加深了对自身专业的了解&#xff0c;也启发了我&#xff0c;提供给我一种新的创作方式和新的创作表现…

django定时任务

说明 网上很多资料都是比较旧的&#xff0c;不同的版本使用上存在差异&#xff0c;最好的方式是&#xff0c;根据使用的版本查看官方资料 django-celery-beat 用法和django-celery类似 INSTALLED_APPS [django_celery_beat] BEAT_SCHEDULER django_celery_beat.schedulers:Da…

LOG与DOG的关系

注意&#xff1a;这里只是推出LOG与DOG的关系 1&#xff09;高斯函数&#xff1a; &#xff08;1&#xff09; 2&#xff09;DOG&#xff08;Difference Of Gaussian&#xff09; DoG算子是LoG算子的近似&#xff0c;做法是求取不同sigma方差下的高斯滤波图像的差&#xff0c…

springboot springcloud区别_SpringBoot回顾、Spring Cloud初学

Spring Cloud介绍什么是Spring Cloud&#xff1f;Spring Cloud是一系列框架的有序集合。 它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用Spring Boot的…