大家好,欢迎来到IT知识分享网。
样例输入
52
样例输出
枚举+判断 JAVA
import java.util.Scanner; public class Palindrome {
public static void main(String[] agrs) {
int n = 0; int i = 0, j = 0, k = 0; Scanner m = new Scanner(System.in); if (m.hasNext()) {
n = m.nextInt(); } for (i = 1; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
if (i * 2 + j * 2 + k == n) System.out.println("" + i + j + k + j + i); } } } for (i = 1; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
if (i * 2 + j * 2 + k * 2 == n) System.out.println("" + i + j + k + k + j + i); } } } } }
在蓝桥杯的检测中有很多细节的地方需要注意!!!
不然会纠结很久。
- 答案的顺序很重要,顺序指的是
不能变为
也就是在编程中for循环
for (i = 1; i < 10; i++) { for (j = 0; j < 10; j++) { for (k = 0; k < 10; k++) { 不能改为
for (i = 1; i < 10; i++) {
for (j = 9; j >=0; j--) {
for (k = 0; k < 10; k++) {
进阶版(考虑奇偶性)
import java.util.Scanner; public class Palindrome2 {
public static void main(String[] args) {
int n = 0; int i, j, k, l; Scanner sc = new Scanner(System.in); if (sc.hasNext()) {
n = sc.nextInt(); } /* 单数的情况和含有五位数的偶数部分 */ // 先看中间位 if (n % 2 == 0) {
l = 8;/* 当n为偶数时中间位最大为8 */ } else {
l = 9;/* 奇数时最大可为9 */ } for (k =1; k <10; k++) {
for (j = 0; j <10; j++) {
for (i = 0; i <=l; i++) {
if (k * 2 + j * 2 + i == n) System.out.println("" + k + j + i + j + k); } } } if(n%2==0){
/* 只有偶数的情况才会出现6位数 */ for (i = 1; i < 10; i++) {
for (j = 0; j < 10; j++) {
for (k = 0; k < 10; k++) {
if (2 * i + 2 * j + 2 * k == n) System.out.println("" + i + j + k + k + j + i); } } } } } }
由于代码不难就不做过多解释啦,有问题的小宝宝可以私聊我。
C++ (方法与上面相同)
#include<iostream> #include<algorithm> using namespace std; int ans[]; int main() {
int n,now,t=0; cin>>n; if(n%2==0)//只有偶数才有6位十进制数的可能 {
now=n/2; for(int i=9;i>=1;i--)//第一位不能为0 {
if(now-i>=0) {
for(int j=9;j>=0;j--) {
if(now-i-j>=0) {
for(int k=9;k>=0;k--) {
if(i+j+k==now) {
ans[t++]=i*+j*10000+k*1000+k*100+j*10+i; } } } } } } } //五位数的情况 int l; if(n%2==0) {
l=8; } else l=9; for(int i=l;i>=0;i=i-2)//先考虑最中间位数的情况,如果n是偶数,则最中间的一定是偶数,如果n是奇数,则中间位为奇数 {
if(n-i>=0) {
now=(n-i)/2; for(int j=9;j>=1;j--)//首位不为0 {
if(now-j>=0) {
for(int k=9;k>=0;k--) {
if(j+k==now) ans[t++]=j*10000+k*1000+i*100+k*10+j; } } } } } sort(ans,ans+t); for(int i=0;i<t;i++) {
cout<<ans[i]<<endl; } return 0; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127906.html
