結果
問題 | No.491 10^9+1と回文 |
ユーザー |
|
提出日時 | 2017-03-11 00:59:59 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 140 ms / 1,000 ms |
コード長 | 986 bytes |
コンパイル時間 | 2,208 ms |
コンパイル使用メモリ | 77,652 KB |
実行使用メモリ | 54,204 KB |
最終ジャッジ日時 | 2024-10-01 08:26:49 |
合計ジャッジ時間 | 18,005 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 103 |
ソースコード
import java.util.Arrays;import java.util.PriorityQueue;import java.util.Scanner;public class Main {public static void main(String[] args) {new Main().run();}static long N;static long FACTOR = 1_000_000_000 + 1;static long[] pow10 = new long[19];void run() {pow10[0] = 1;for (int i = 1; i < pow10.length; ++i)pow10[i] = pow10[i - 1] * 10;Scanner sc = new Scanner(System.in);N = sc.nextLong();long ans = 0;for (int i = 0; i <= 8; ++i) {ans += dfs(0, i, 0, true);}System.out.println(ans);}static long dfs(int s, int t, long cur, boolean f) {if (s > t) {if (cur > 0) {return 1;} elsereturn 0;}long sum = 0;for (int i = (f ? 1 : 0); i < 10; ++i) {long tmp = cur + (pow10[s] + (s == t ? 0 : pow10[t])) * i;if (tmp * FACTOR <= N) {sum += dfs(s + 1, t - 1, tmp, false);}}return sum;}static void tr(Object... objects) {System.out.println(Arrays.deepToString(objects));}}