解题思路:
就暴力硬解
没有采用for(int i=0;i<10000;i++)的形式因为这样太费时了,可能会超时
而是往第一个和最后一个填一样的数字,第二个和倒数第二个填一样的数字........再判断各个位数相加是否为n。这样只用采用三次for循环就可以算出题解
注意事项:
在填第一个数字的时候,第一个数字不可以为0。
其他位数的数字可以
参考代码:
#include<iostream> #include<string> using namespace std; //定义全局数组,这样可以让它们的每一个元素的初始值为0 int five[5]; //存放五位回文数字 int six[6]; //存放六位回文数字 int main() { int n; cin>>n;//要满足的数位和 int sign=1; for(int a=1;a<10;a++) //5位回文数字 { five[0]=a; five[4]=a; for(int b=0;b<10;b++) { five[1]=b; five[3]=b; for(int c=0;c<10;c++) { five[2]=c; if(five[0]+five[1]+five[2]+five[3]+five[4]==n) { cout<<five[0]<<five[1]<<five[2]<<five[3]<<five[4]<<endl; sign=0; } } } } for(int a=1;a<10;a++) //5位回文数字 { six[0]=a; six[5]=a; for(int b=0;b<10;b++) { six[1]=b; six[4]=b; for(int c=0;c<10;c++) { six[2]=c; six[3]=c; if(six[0]+six[1]+six[2]+six[3]+six[4]+six[5]==n) { cout<<six[0]<<six[1]<<six[2]<<six[3]<<six[4]<<six[5]<<endl; sign=0; } } } } if(sign) cout<<-1<<endl; return 0; }
0.0分
0 人评分
C语言训练-排序问题<1> (C语言代码)浏览:636 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:636 |
WU-格式化数据输出 (C语言代码)浏览:1818 |
IP判断 (C语言代码)浏览:820 |
简单的a+b (C语言代码)浏览:457 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:566 |
数字游戏 (C++代码)浏览:1240 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:755 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:555 |
1202题解浏览:689 |