第k回文数
来源:互联网 发布:imap端口号 编辑:程序博客网 时间:2024/06/02 01:59
问题:
给一个数k,给出第k个回文数
分析:
一位数9个,二位数9个;
三位数90个,四位数90个;
五位数900个,六位数900个;
。。。。。
给出代码:
#include <stdio.h>void calPalin(int iNum);int main(){int iNum;while (scanf("%d",&iNum)!=EOF){if (iNum<=0) {printf("Error Input!\n\n");}else{calPalin(iNum);}}return 0;}void calPalin(int iNum){int iHalfLen,iHalf,iDegree,iDigit,iResult; //iHalfLen是回文数对称左边有几位,如12521左边是3位数 //iHalf是回文数对称的左边一半,如12521中的125;iDegree表示几位数;//iDigit表示某一几位数有多少回文数,如3位数有90个; iResult是结果int i;iDigit=9; //赋初值为9for (iDegree=1;;iDegree++){if (iNum-iDigit<=0) //该处=0时一定要退出!!{break;}iNum-=iDigit;if (iDegree%2==0) //一位数和二位数中的回文数是一样多,三位数和四位数中也一样。。。{iDigit*=10;}}iHalfLen=(iDegree+1)/2; //算某一回文数左边的位数,如12521左边有3位iHalf=1; //我觉得精华之所在for (i=2;i<=iHalfLen;i++){iHalf*=10; }iHalf+=iNum-1;iResult=iHalf;if (iDegree&1) //如果是奇位数,那么右边比左边一半少一位{iHalf/=10;}while (iHalf) //求最终结果{iResult=iResult*10+iHalf%10;iHalf/=10;}printf("The result is : %d\n\n",iResult);}
- 第k回文数
- 第K回文数
- NOJ1046第K回文数——???
- 南邮 OJ 1046 第K回文数
- noj 1046 第K回文数
- NOJ 1046 第K回文数 水题
- poj2402(计算第k个回文数)
- 回文数 找第n个回文数
- 查找第k小个数
- 第K大的数
- 第k个排列数
- 第k大的数
- 第k大的数
- 第K个幸运数
- 第k小的数
- 第K大的数
- 第k大的数
- 第K小邪恶数
- traits的应用场合
- 使用X-UA-Compatible来设置IE8兼容模式
- 实习生招聘笔试
- MFC 多视图之间的通信
- 华为机试题(4)
- 第k回文数
- Java IO系统(上)
- 从基因来看腾讯
- Ajax常见问题整理
- Android adb
- 120408
- 蓄水池抽样
- 单文档多视图的创建
- 2012年4月8日