I00010 打印1到输入数之间的回文数
对于一个数,要判定它是否是回文数,直观的做法是先判定其最高位(首位)与最低位(最后一位)是否相同,如果不同则不是回文数;如果相同则其掉其做高位和最低位,对剩余的位继续进行判定;如果剩余的位只有一位或零位(即整个数是偶数位)则为回文数。
本程序就是基于这样的基本思想进行计算的。
本程序通用性强,可以计算1到任意指定数之间的所有回文数。
计算回文数还可以用数字字符组合的方法来实现,算法上采用回溯法。
程序如下:
/* 打印输出1到输入数之间的回文数 */#include <stdio.h>int isPalindrome(long, long);int main(void)
{long n, i, mod = 1;scanf("%ld", &n);for(i=1; i<=n; i++) {if(i == mod * 10)mod *= 10;if(isPalindrome(i, mod))printf("%ld ", i);}printf("\n");return 0;
}// 判断n是否为回文数的函数
// 参数n为需要判断是否为回文数的数
// 参数bigmod,若n为m位数,其值为10^m-1(10的m-1次方)
// 参数bigmod必须事先正确设置
int isPalindrome(long n, long bigmod)
{int flag = 1;for(;;) {// 判断首位与末位是否相同,不同则不是回文数if(n/bigmod != n%10) {flag = 0;break;}// 如果只剩下1位或2位结束if(bigmod <= 10)break;// 去掉最高位和最低位n %= bigmod;n /= 10;bigmod /= 100;}return flag;
}
关键代码:
// 判断n是否为回文数的函数
// 参数n为需要判断是否为回文数的数
// 参数bigmod,若n为m位数,其值为10^m-1(10的m-1次方)
// 参数bigmod必须事先正确设置
int isPalindrome(long n, long bigmod)
{int flag = 1;for(;;) {// 判断首位与末位是否相同,不同则不是回文数if(n/bigmod != n%10) {flag = 0;break;}// 如果只剩下1位或2位结束if(bigmod <= 10)break;// 去掉最高位和最低位n %= bigmod;n /= 10;bigmod /= 100;}return flag;
}
输入20000时,程序运行结果如下:
I00010 打印1到输入数之间的回文数相关推荐
- 10000内的回文数c语言,回文数
"回文"是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如"我为人人,人人为我"等.在数学中也有这样一类数字有这样的特征,成为回文数(pa ...
- 求区间[1,n]之间的回文数
题目描述 输入一个t, 表示有t组样例,每组样例输入一个整数n,求区间 [1,n]内有多少个回文数. 解题思路 按照常规的从1枚举到n再依次判断每个数是否为回文数显然是行不通的,所以我们需要用数学方法 ...
- mn之间的回文数c语言,c语言描述回文数的三种算法
题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,88,99 共9个: * 请问:n ...
- 编写程序,定义一个方法,能够判断一个1~9999之间的数是否是回文数。
回文数就是类似123321之类的数 package test; import java.util.*; public class test_2_4 {public static void main(S ...
- c语言判断回文平方数,C/C++回文数的判断(转)
"回文数"是一种数字.如:98789, 这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数. 平方回数 定义:一个回文数,它同时还是某一个数的平方, ...
- python回文数判断_python回文数判断
什么是回文数? 有这样一类数,他们顺着看和倒着看是相同的数,例如:12321,1221,2332等,这样的数字就称为:回文数 输入一个5位数,用python判断它是不是回文数.即12321是回文数,个 ...
- 蓝桥杯系统练习:回文数、特殊回文数
1.回文数 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. #include <std ...
- 蓝桥杯 基础练习 BASIC-8 回文数 循环 判断 回文数
基础练习 回文数 时间限制:1.0s 内存限制:512.0MB 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条 ...
- 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。(回文数)
问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. public class Main {pub ...
最新文章
- iOS UIView快速添加事件
- 文件控制 fcntl函数具体解释
- HTML从入门到进阶修炼
- Elasticsearch文档的CRUD
- angular依赖注入_Angular依赖注入简介
- “堂堂985博士,要去高职了,天空是灰暗的!!!”
- KafkaController介绍
- 句柄即GetSafeHwnd的作用
- java AES 32位加密解密
- CAD迷你看图 for Mac(MiniCAD)
- 不错的Unity教程
- Cameralink视频数据信号
- IBM SPSS Modeler 【4】 神经网络模型的测试验证
- SylixOS---Attach 到进程调试方法
- 外汇汇率接口 java_免费的货币汇率API
- android flurry 教程,Flurry没有集成到Android应用中
- unity小游戏的脚本
- Bugku杂项——图穷匕见
- 网站突然无法访问解决方案
- 按关键字爬取网页信息
热门文章
- WebStorm 自定义字体+颜色+语法高亮+导入导出用户设置
- 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境
- 项目启动会ppt_公司召开SAPERP项目启动会
- linux cron网址,cron 计划任务问题,我的cron要求是点击网站一个网址
- Broadcast variabies-广播变量
- ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc
- 计算机系统的工作方式,计算机的操作系统与工作方式
- LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
- TCP如何保障可靠性
- 图像处理领域的国际会议及期刊