特殊回文数

特殊回文数

时间: 1ms        内存:128M

描述:

123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n(1<=n<=54), 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。

输入:

输入一行,包含一个正整数n。

输出:

按从小到大的顺序输出满足条件的整数,每个整数占一行。

示例输入:

4

示例输出:

10201
11011
20002
101101
110011
200002

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
int main()
{
    int i,j,k;
    int n,m;
    scanf("%d",&n);
    for(i=1;i<=9;i++)
        for(j=0;j<=9;j++)
            for(k=0;k<=9;k++)
            if(n==(i+j+k+j+i))
            {
            printf("%d%d%d%d%d\n",i,j,k,j,i);
            }
            if(n%2==0)
            {
                for(i=1;i<=9;i++)
                    for(j=0;j<=9;j++)
                        for(k=0;k<=9;k++)
                        if(n==(i+j+k+i+j+k))
                        {
                        printf("%d%d%d%d%d%d\n",i,j,k,k,j,i);
                        }
            }
    return 0;
}

参考答案(时间最优[0]):

#include <iostream>
using namespace std;
int main()
{
	int x,y,z,n;
	cin>>n;
	for(x=1;x<10;x++)
	{
		for(y=0;y<10;y++)
		{
			for(z=0;z<10;z++)
			{
				if(2*x+2*y+z==n) cout<<x<<y<<z<<y<<x<<endl;
			}
		}
	}
		for(x=1;x<10;x++)
	{
		for(y=0;y<10;y++)
		{
			for(z=0;z<10;z++)
			{
				if(2*x+2*y+2*z==n) cout<<x<<y<<z<<z<<y<<x<<endl;
			}
		}
	}
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注