现在的位置: 首页 > 综合 > 正文

回文数的生成

2018年01月12日 ⁄ 综合 ⁄ 共 985字 ⁄ 字号 评论关闭
回文数怎样生成?? 这样来考虑:
  11 22 33 101 202 313 5566 7788 10001
  可由类似这种公式来生成 10001 * n + 1010 * m + 100 * p 五位数
 所以我们可以利用这种思路来形成1 - 10^9范围内的回文数表

 代码如下:

 

int Palind[1000000],pnum=1;
 int n,m,k,p,q;
   
    for(n=1;n<=9;n++)
        Palind[pnum++]=n;
    for(n=1;n<=9;n++)
        Palind[pnum++]=11*n;
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            Palind[pnum++]=101*n+10*m;
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            Palind[pnum++]=1001*n+110*m;
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            for(k=0;k<=9;k++)
                Palind[pnum++]=10001*n+1010*m+100*k;   
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            for(k=0;k<=9;k++)
                Palind[pnum++]=100001*n+10010*m+1100*k;
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            for(k=0;k<=9;k++)
                for(p=0;p<=9;p++)
                    Palind[pnum++]=1000001*n+100010*m+10100*k+1000*p;
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            for(k=0;k<=9;k++)
                for(p=0;p<=9;p++)
                    Palind[pnum++]=10000001*n+1000010*m+100100*k+11000*p;
    for(n=1;n<=9;n++)
        for(m=0;m<=9;m++)
            for(k=0;k<=9;k++)
                for(p=0;p<=9;p++)
                    for(q=0;q<=9;q++)
        Palind[pnum++]=100000001*n+10000010*m+1000100*k+101000*p+10000*q;

Palind[]中变是回文数表。

抱歉!评论已关闭.