結果
問題 | No.491 10^9+1と回文 |
ユーザー |
|
提出日時 | 2017-03-11 00:19:15 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 248 ms / 1,000 ms |
コード長 | 1,853 bytes |
コンパイル時間 | 3,634 ms |
コンパイル使用メモリ | 79,196 KB |
実行使用メモリ | 60,884 KB |
最終ジャッジ日時 | 2024-10-01 08:25:32 |
合計ジャッジ時間 | 30,879 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 103 |
ソースコード
import java.io.*;import java.util.*;public class Main_yukicoder491 {private static Scanner sc;private static Printer pr;private static void solve() {long n = sc.nextLong();long t = 1_000_000_001;int ret = 0;for (int i = 1; i < 10_000; i++) {if (i % 10 == 0) {continue;}StringBuilder tmp = new StringBuilder();tmp.append(i);if (t * i <= n) {if (isPalindrome(tmp)) {ret++;}}while (tmp.length() <= 4) {int m = tmp.length();StringBuilder tmp2 = new StringBuilder();for (int j = 0; j < m; j++) {tmp2.append(tmp.charAt(m - 1 - j));}for (int j = 0; j < m; j++) {tmp2.append(tmp.charAt(j));}long ltmp = Long.parseLong(tmp2.toString());if (ltmp > 9999 && ltmp < 1_000_000_000 && t * ltmp <= n) {ret++;}for (int c = 0; c < 10; c++) {tmp2 = new StringBuilder();for (int j = 0; j < m; j++) {tmp2.append(tmp.charAt(m - 1 - j));}tmp2.append((char)('0' + c));for (int j = 0; j < m; j++) {tmp2.append(tmp.charAt(j));}ltmp = Long.parseLong(tmp2.toString());if (ltmp > 9999 && ltmp < 1_000_000_000 && t * ltmp <= n) {ret++;}}tmp.insert(0, '0');}}pr.println(ret);}private static boolean isPalindrome(StringBuilder str) {int n = str.length();boolean flag = true;for (int i = 0; i < n / 2; i++) {if (str.charAt(i) != str.charAt(n - 1 - i)) {flag = false;break;}}return flag;}// ---------------------------------------------------public static void main(String[] args) {sc = new Scanner(System.in);pr = new Printer(System.out);solve();pr.close();sc.close();}private static class Printer extends PrintWriter {Printer(PrintStream out) {super(out);}}}