質問編集履歴
2
数式画像が間違っていたため訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -134,7 +134,7 @@
|
|
134
134
|
|
135
135
|
ここまではわかっています。18桁までの回文数は以下の式で求められます。
|
136
136
|
|
137
|
-
![組合せ数](5
|
137
|
+
![組合せ数](2e63350f7552fe83e516ce8d6cc67d2d.png)
|
138
138
|
|
139
139
|
|
140
140
|
|
1
桁数から回文数の個数を求める(追記)
test
CHANGED
File without changes
|
test
CHANGED
@@ -121,3 +121,49 @@
|
|
121
121
|
|
122
122
|
|
123
123
|
質問のどれかに答えていただいても、解法の一部でも、ヒントでも構いません。
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
###
|
130
|
+
|
131
|
+
**桁数から回文数の個数を求める(追記)**
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
ここまではわかっています。18桁までの回文数は以下の式で求められます。
|
136
|
+
|
137
|
+
![組合せ数](5b2417b703caafce3f5e082c6ffab194.png)
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
```Java
|
142
|
+
|
143
|
+
/**
|
144
|
+
|
145
|
+
* 桁数nを与えて、1桁からn桁までの回文数の個数を返す。
|
146
|
+
|
147
|
+
* @param n 桁数 (1以上)
|
148
|
+
|
149
|
+
* @return 回文数の個数
|
150
|
+
|
151
|
+
*/
|
152
|
+
|
153
|
+
static long countPalindromics_(int n) {
|
154
|
+
|
155
|
+
if (n <= 0) {
|
156
|
+
|
157
|
+
throw new IllegalArgumentException("nは1以上です。");
|
158
|
+
|
159
|
+
}
|
160
|
+
|
161
|
+
long acc = IntStream.rangeClosed(1, n).mapToLong(i -> (long) Math.pow(10, (i-1)/2) * 9l).sum();
|
162
|
+
|
163
|
+
return acc + 1;
|
164
|
+
|
165
|
+
}
|
166
|
+
|
167
|
+
```
|
168
|
+
|
169
|
+
この知識を前提にすれば、n のうち、1000000000000000000 <= m < Long.MAX_VALUE までの m に含まれる回文数の個数を求めたい。
|