結果
問題 | No.491 10^9+1と回文 |
ユーザー |
![]() |
提出日時 | 2018-08-21 01:17:31 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 32 ms / 1,000 ms |
コード長 | 1,564 bytes |
コンパイル時間 | 959 ms |
コンパイル使用メモリ | 83,476 KB |
実行使用メモリ | 7,832 KB |
最終ジャッジ日時 | 2024-11-28 02:19:44 |
合計ジャッジ時間 | 6,210 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 103 |
ソースコード
#include<cstdio>#include<queue>#include<utility>#include<cstring>#include<stack>#include<algorithm>#include<cmath>#include<iostream>#include<map>#define MAX_N 100001#define INF_INT 2147483647#define INF_LL 9223372036854775807#define REP(i,n) for(int i=0;i<(int)(n);i++)using namespace std;typedef long long int ll;typedef pair<ll,ll> P;void init(int n);int find(int n);void unite(int x,int y);bool same(int x, int y);ll bpow(ll,ll,ll);typedef vector<int> vec;typedef vector<vec> mat;mat mul(mat &A,mat &B);mat pow(mat A,ll n);int dx[4] = {1,0,0,-1};int dy[4] = {0,1,-1,0};bool cmp_P(const P &a,const P &b){return a.second < b.second;}int main(){ll N,sin;cin >> N;sin = N / (1000000001);if(sin == 0){cout << 0 << endl;return 0;}vector<vector<ll> > kaibun(12,vector<ll>(0));vector<ll> kaib(0);for(int i=0;i<=9;i++){kaibun[1].push_back(i);kaib.push_back(i);}for(int i=0;i<=9;i++){kaibun[2].push_back(i*11);kaib.push_back(i*11);}for(int i=3;i<=10;i++){for(int j=0;j<kaibun[i-2].size();j++){for(int k=1;k<=9;k++){kaibun[i].push_back(k*pow(10,i-1)+10*kaibun[i-2][j]+k);kaib.push_back(k*pow(10,i-1)+10*kaibun[i-2][j]+k);}}REP(k,kaibun[i-2].size()){kaibun[i].push_back(10*kaibun[i-2][k]);}}sort(kaib.begin(),kaib.end());kaib.erase(unique(kaib.begin(),kaib.end()),kaib.end());kaib.erase(kaib.begin());cout << upper_bound(kaib.begin(),kaib.end(),sin) - kaib.begin() << endl;return 0;}