2015蓝桥杯决赛 02 生成回文数(java)



标题:生成回文数


所谓回文数就是左右对称的数字,比如:
585,5885,123321...
当然,单个的数字也可以算作是对称的。


小明发现了一种生成回文数的方法:
比如,取数字19,把它与自己的翻转数相加:
19 + 91 = 110,如果不是回文数,就再进行这个过程:
110 + 011 = 121 这次是回文数了。


200以内的数字中,绝大多数都可以在30步以内变成回文数,只有一个数字很特殊,就算迭代了1000次,它还是顽固地拒绝回文!


请你提交该顽固数字,不要填写任何多余的内容。


代码如下:

package juesai02;

public class Main {
	
	//判断一个数是否为回文数
	public static boolean panduan(int s){
		String string = Integer.toString(s);	//int 转化为 String
		for(int i=0;i<string.length()/2;i++){
			if(string.charAt(i)!=string.charAt(string.length()-i-1)){	//比较前一个与后一个
				return false;
			}
		}
		return true;
	}
	
	//把一个数进行翻转
	public static int fanzhaun(int s){
		int sum = 0;
		int t = s;	//先保存原来的值
		while (s!=0){
			int temp = s%10;
			sum = sum*10 + temp;	//先升一位,再加
			s /= 10;
		}
		return sum + t;	//并且与原来的值相加
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		for(int i=0;i<200;i++){
			int temp = i;
			int cnt = 0;
			while(true){
				boolean flag = panduan(temp);
				if(flag==false){	//不是回文数
					temp = fanzhaun(temp);
					cnt++;
					if(cnt>500){
						System.out.println(i);
						break;
					}
				}else{	//回文数
					System.out.println(i+" "+cnt);
					break;
				}
			}
		}
	}

}


结果:(发现没有大于1000)
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 1
11 0
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 2
20 1
21 1
22 0
23 1
24 1
25 1
26 1
27 1
28 2
29 1
30 1
31 1
32 1
33 0
34 1
35 1
36 1
37 2
38 1
39 2
40 1
41 1
42 1
43 1
44 0
45 1
46 2
47 1
48 2
49 2
50 1
51 1
52 1
53 1
54 1
55 0
56 1
57 2
58 2
59 3
60 1
61 1
62 1
63 1
64 2
65 1
66 0
67 2
68 3
69 4
70 1
71 1
72 1
73 2
74 1
75 2
76 2
77 0
78 4
79 6
80 1
81 1
82 2
83 1
84 2
85 2
86 3
87 4
88 0
89 164
90 1
91 2
92 1
93 2
94 2
95 3
96 4
97 6
98 164
99 0
100 1
101 0
102 1
103 1
104 1
105 1
106 1
107 1
108 1
109 2
110 1
111 0
112 1
113 1
114 1
115 1
116 1
117 1
118 1
119 2
120 1
121 0
122 1
123 1
124 1
125 1
126 1
127 1
128 1
129 2
130 1
131 0
132 1
133 1
134 1
135 1
136 1
137 1
138 1
139 2
140 1
141 0
142 1
143 1
144 1
145 1
146 1
147 1
148 1
149 2
150 2
151 0
152 2
153 2
154 2
155 3
156 3
157 3
158 3
159 2
160 2
161 0
162 2
163 2
164 3
165 3
166 5
167 11
168 3
169 2
170 2
171 0
172 2
173 2
174 4
175 4
176 5
177 45
178 3
179 2
180 3
181 0
182 6
183 4
184 3
185 3
186 3
187 163
188 7
189 2
190 7
191 0
192 4
193 8
194 3
195 4
196 286
197 7
198 5
199 3


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值