解题思路:
注意事项:
此题比较容易超时, 需要减少遍历次数
参考代码:
#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 人评分
printf基础练习2 (C语言代码)浏览:414 |
宏定义浏览:837 |
指针做法浏览:886 |
C语言程序设计教程(第三版)课后习题8.7 (C++代码)浏览:828 |
C语言程序设计教程(第三版)课后习题7.2 (Java代码)浏览:686 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1176 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:476 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:621 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:676 |
模拟计算器 (C++代码)浏览:806 |