p2273.cpp
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 37 行
CPP
37 行
#include <cstdlib>
#include <iostream>
using namespace std;
int len;
char Name [500000];
int Pos [100000];
void prepare ()
{
len = 0;
for ( int i = 1; i < 100000; i ++ ) {
if ( i > 9999 ) Name [++len] = i / 10000;
if ( i > 999 ) Name [++len] = i / 1000 % 10;
if ( i > 99 ) Name [++len] = i / 100 % 10;
if ( i > 9 ) Name [++len] = i / 10 % 10;
Name [++len] = i % 10;
Pos [i] = len;
}
}
int find ( int L , int state = 0 )
{
if ( L == 1 ) return 1;
return state & 1 ? find ( L / 2 , state + 1 ) * 2 : find ( ( L + 1 ) / 2 , state + 1 ) * 2 - 1;
}
int main(int argc, char *argv[])
{
prepare ();
int N;
while ( scanf ( "%d" , &N ) != EOF ) printf ( "%d\n" , Name [find ( Pos [N] )] );
system("PAUSE");
return EXIT_SUCCESS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?