解题思路:
注意事项:
此题比较容易超时, 需要减少遍历次数
参考代码:
#include using namespace std; vector bool check(int n, int num) { tmp.clear(); int sum = 0, size; bool flag = true; while(num) { tmp.push_back(num%10); sum += num%10; num /= 10; } size = tmp.size(); if(sum != n) { //判断数位和是否满足 flag = false; }else{ //判断是否是回文数 for(int i=0; i<size/2; i++) { //不用循环到i=size-1 if(tmp[i] != tmp[size-1-i]) { flag = false; break; } } } return flag; } int main() { int n, i; int cnt = 0; cin >> n; for(i=10000; i<=999999; i++) { //题目要求找到5位或者6位的十进制数,所以从10000开始,到999999结束,减少遍历时间 if(check(n, i)) { cnt = 1; cout << i << endl; } } if(!cnt) cout << -1; return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.7 (C++代码)浏览:858 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:741 |
点我有惊喜!你懂得!浏览:1274 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:622 |
C语言训练-阶乘和数* (C语言代码)浏览:1060 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1067 |
高精度加法 (C++代码)(大数加法)浏览:1008 |
Pascal三角 (C语言代码)格式错误浏览:551 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:639 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:1114 |