迟到的作业它来啦!
特殊回文字符串和回文字符串的解题方法差不多,用了一样的方法,加了一些条件。
偷偷记一记别人的方法:六位数:(2a+2b+2c==n)? cout<<a<<b<<c<<d<<e<<f<<endl;
五位数:(2a+2b==n)? cout<<a<<b<<c<<d<<e<<endl;
C++:
1 #include<iostream> 2 using namespace std; 3 4 void main(){ 5 int n; 6 cin>>n; 7 int a,b,c,d,e,f; 8 int sum1,sum2; 9 for(int i=10000;i<=999999;i++){ 10 a=i/100000%10; 11 b=i/10000%10; 12 c=i/1000%10; 13 d=i/100%10; 14 e=i/10%10; 15 f=i%10; 16 sum1=a+b+c+d+e+f; 17 sum2=a+b+c+d+e; 18 if(sum1==n){ //sum=n 不能n=a+b+c+d+e+f 在比较之前 19 if(a==f&&b==e&&c==d){ 20 cout<<a<<b<<c<<d<<e<<f<<endl; 21 } 22 if(sum2==n){ 23 if(a==e&&b==d){ //增加条件用else if 24 cout<<a<<b<<c<<d<<e<<endl; 25 } 26 } 27 } 28 } 29 return ; 30 } 31 //sum1 sum2 是单纯输出五位数和六位数的关键
java:
1 import java.util.*; 2 import java.io.*; 3 public class 特殊回文数 { 4 public static void main(String[] args) { 5 Scanner cin=new Scanner(System.in); 6 int n=cin.nextInt();; 7 int a,b,c,d,e,f; 8 int sum1,sum2; 9 for(int i=10000;i<=999999;i++){ 10 a=i/100000%10; 11 b=i/10000%10; 12 c=i/1000%10; 13 d=i/100%10; 14 e=i/10%10; 15 f=i%10; 16 sum1=a+b+c+d+e+f; 17 sum2=a+b+c+d+e; 18 if(sum1==n){ 19 if(a==f&&b==e&&c==d){ 20 System.out.println(i); 21 } 22 if(sum2==n){ 23 if(a==e&&b==d){ //增加条件用else if 24 System.out.println(i); 25 } 26 } 27 } 28 } 29 return ; 30 } 31 }
题目:
特殊回文数
问题描述
123321 是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数 n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于
n 。
输入格式
输入一行,包含一个正整数 n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。

浙公网安备 33010602011771号