結果
問題 | No.491 10^9+1と回文 |
ユーザー |
![]() |
提出日時 | 2017-03-10 23:36:39 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,382 bytes |
コンパイル時間 | 1,548 ms |
コンパイル使用メモリ | 169,284 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-24 08:57:25 |
合計ジャッジ時間 | 5,731 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 WA * 65 TLE * 1 |
ソースコード
#include<bits/stdc++.h>using namespace std;#define rep(i,a,b) for(int i=a;i<b;i++)#define rrep(i,a,b) for(int i=a;i>=b;i--)typedef long long ll;ll N;//-----------------------------------------------------------------int main() {cin >> N;ll mo = 1000000001;int dig = 0;ll t = N;while (0 < t) dig++, t /= 10;ll ans = 0;rrep(i, 8, 1) {ll cc = 0;int d = i + 2 * (9 - i);if (d < dig) {// 全部OKint j = 9 - i;if (j == 1) {cc = 9;}else if (j % 2 == 0) {int k = j / 2 - 1;ll c = 9;rep(kk, 0, k) c *= 9;cc += c;}else {int k = j / 2;ll c = 9;rep(kk, 0, k) c *= 9;cc += c;}}else if (d == dig) {// 一部OKint j = 9 - i;string n = to_string(N);int ma = 0;rep(i, 0, j) ma = ma * 10 + n[i] - '0';int mi = 0;rep(i, 0, j) mi = mi * 10 + 1;rep(x, mi, ma) {string s = to_string(x);bool ok = true;rep(i, 0, s.length() / 2 + 1) {int j = s.length() - 1 - i;if (s[i] != s[j]) ok = false;}if (ok) cc++;}ll th = ma;rep(i, 0, d - j * 2) th *= 10;int y = ma;while (0 < y) {th = th * 10 + y % 10;y /= 10;}if (th <= N) cc++;//cout << th << endl;//printf("[%d %d]\n", mi, ma);}ans += cc;//if(0 < cc) printf("%d -> %lld\n", d, cc);}cout << ans << endl;}