結果
問題 | 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; } else return 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)); } }