蓝桥杯
问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入 一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。然后下面的代码输入n很多是对的,n输入36时是错的,求解,或者有不有更好的方法,敬请赐教!
#include<math.h>
using namespace std;
int main()
{
int n, i, j,t=0,k=0,u=0;
int a[10] = { 0 }, b[100] = { 0 }, c[1000] = { 0 };
cin >> n;
for (j = 10; j < 100; j++)//先找五位数,左两位和右两位数字一样,所以遍历10到99;
for (i = 0; i < 10; i++)
{
int x1, x2;
x1 = j % 10;//存个位数
x2 = j / 10;//存十位数啊
if (i + 2 * (x1 + x2) == n)
{
b[k++] = j;//存五位数的前两位
a[t++] = i;//存五位数的第三位
}
}
for (i = 100; i < 1000; i++)//左三位和右三位一样,遍历100到1000
{
int x3, x4, x5;
x3 = i % 10;//个位
x4 = i / 10 % 10;//十位
x5 = i / 100;//百位
if ((x3 + x4 + x5) * 2 == n)
c[u++] = i;//存六位数前三位
}
for (i = 0; b[i] && i < 100; i++)
cout << b[i] << a[i] << b[i]%10 <<b[i]/10<< endl;//将两位数分解倒置
for (i = 0; c[i] && i < 1000; i++)
cout << c[i] <<c[i]%10<<c[i]/10%10<<c[i]/100<< endl;
return 0;
}