結果

問題 No.491 10^9+1と回文
ユーザー tkmst201tkmst201
提出日時 2017-03-10 23:20:51
言語 C++11
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 2,049 bytes
コンパイル時間 1,104 ms
コンパイル使用メモリ 95,688 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-06-24 08:41:29
合計ジャッジ時間 3,600 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 42 WA * 61
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <functional>
#include <cmath>
#include <complex>
#include <cctype>
#include <cassert>
#include <sstream>
#include <ctime>

using namespace std;

#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(v) (v).begin(),(v).end()

template<typename A, typename B> inline bool chmax(A &a, B b) { if (a<b) { a=b; return 1; } return 0; }
template<typename A, typename B> inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; }

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<int, pii> P;

#define INF (1<<29)
#define INFL (1ll<<60)
#define EPS (1e-8)
#define PI (acos(-1))
const ll MOD = 1000000007ll;

int main() {
	ll n;
	cin >> n;
	
	vector<string> v(9);
	
	FOR(i, 1, 10) {
		ll now = 1000000001ll * i;
		stringstream ss;
		ss << now;
		v[i - 1] = ss.str();
	}
	
	bool ng;
	REP(i, 100) {
		FOR(j, 1, 10) {
		 v.push_back(v[(i + 1) * 9 - (9 - (j - 1))]);
		 int now = v.size() - 1;
		 v[now].insert(v[now].begin(), '0' + j);
		 ng = true;
		 for (int k = v[now].size() - 1; k >= 0; k--) {
		 	if (v[now][k] == '0') {
		 		v[now][k] = '0' + j;
		 		ng = false;
		 		break;
		 	}
		 }
		 if (ng) break;
		}
		if (ng) break;
	}
	
	v.erase(v.end());
	
	FOR(i, 2, 10) {
		FOR(j, 1, 10) {
			stringstream ss;
			ll now = 1000000001ll * (powl(10, i) + 1) * j;
			ss << now;
			v.push_back(ss.str());
		}
	}
	
	FOR(i, 1, 10) {
		stringstream ss;
		ll now = 1000000001ll * 10101 * i;
		ss << now;
		v.push_back(ss.str());
	}
	
	FOR(i, 1, 10) {
		stringstream ss;
		ll now = 1000000001ll * 1010101 * i;
		ss << now;
		v.push_back(ss.str());
	}
	
	FOR(i, 1, 10) {
		stringstream ss;
		ll now = 1000000001ll * 101010101 * i;
		ss << now;
		v.push_back(ss.str());
	}
	
	int ans = 0;
	REP(i, v.size()) {
		ll now;
		stringstream ss(v[i]);
		ss >> now;
		
		if (n < now) continue;
		ans++;
		
	}
	cout << ans << endl;
	
	return 0;
}
0