Language: C++

//include
//------------------------------------------
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <ctime>

using namespace std;

//conversion
//------------------------------------------
inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}
template<class T> inline string toString(T x) {ostringstream sout;sout<<x;return sout.str();}

//math
//-------------------------------------------
template<class T> inline T sqr(T x) {return x*x;}

//typedef
//------------------------------------------
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;

//container util
//------------------------------------------
#define ALL(a)  (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define SZ(a) int((a).size())
#define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())

//repetition
//------------------------------------------
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)

//constant
//--------------------------------------------
const double EPS = 1e-10;
const double PI  = acos(-1.0);

//clear memory
#define CLR(a) memset((a), 0 ,sizeof(a))

//debug
#define dump(x)  cerr << #x << " = " << (x) << endl;
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;


int main(){
    unsigned long long s,k;
    cin >> s >> k;
    string S(strtoull(s));
    /* 
      if ( S.rfind('1') == string::npos ) {
          cout << S.at(0) << endl;
          return 0;
      }  
      unsigned long long i1 = S.rfind('1') + 1;
      if ( i1 >= k ) {
          cout << "1" << endl;
          return 0;
      }
      cout << S.at(i1) << endl;
     */
    unsigned long long  i = 0;
    for(auto itr = S.begin(); itr != S.end(); ++itr){
        if( *itr == '1' ) i++;
        else break;
    }
    if ( k < 102 && i >= k ) {
        cout << "1" << endl;
        return 0;
    }
    cout << S.at(i) << endl;
    
}





Compiler output:
a.cc: In function 'int main()':
a.cc:76:23: error: invalid conversion from 'long long unsigned int' to 'const char*' [-fpermissive]
   76 |     string S(strtoull(s));
      |                       ^
      |                       |
      |                       long long unsigned int
a.cc:76:22: error: too few arguments to function 'long long unsigned int strtoull(const char*, char**, int)'
   76 |     string S(strtoull(s));
      |              ~~~~~~~~^~~
In file included from /usr/include/features.h:523,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/c++config.h:683,
                 from /usr/include/c++/14/bits/requires_hosted.h:31,
                 from /usr/include/c++/14/vector:60,
                 from a.cc:3:
/usr/include/stdlib.h:243:31: note: declared here
  243 | extern unsigned long long int __REDIRECT_NTH (strtoull,
      |                               ^~~~~~~~~~~~~~