Problem:
﻿Score: 300 points

Problem Statement

Mr. Infinity has a string S consisting of digits from 1 to 9. Each time the date changes, this string changes as follows:

Each occurrence of 2 in S is replaced with 22. Similarly, each 3 becomes 333, 4 becomes 4444, 5 becomes 55555, 6 becomes 666666, 7 becomes 7777777, 8 becomes 88888888 and 9 becomes 999999999. 1 remains as 1.

For example, if S is 1324, it becomes 1333224444 the next day, and it becomes 133333333322224444444444444444 the day after next.
You are interested in what the string looks like after 5 \times 10^{15} days. What is the K-th character from the left in the string after 5 \times 10^{15} days?

Constraints

S is a string of length between 1 and 100 (inclusive).

K is an integer between 1 and 10^{18} (inclusive).

The length of the string after 5 \times 10^{15} days is at least K.

Input

Input is given from Standard Input in the following format:

S
K

Output

Print the K-th character from the left in Mr. Infinity's string after 5 \times 10^{15} days.

Sample Input 1

1214
4

Sample Output 1

2

The string S changes as follows:

Now: 1214

After one day: 12214444

After two days: 1222214444444444444444

After three days: 12222222214444444444444444444444444444444444444444444444444444444444444444

The first five characters in the string after 5 \times 10^{15} days is 12222. As K=4, we should print the fourth character, 2.

Sample Input 2

3
157

Sample Output 2

3

The initial string is 3. The string after 5 \times 10^{15} days consists only of 3.

Sample Input 3

299792458
9460730472580800

Sample Output 3

2

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)


using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace AtCoder
{
	// http://abc106.contest.atcoder.jp/tasks/abc106_c
	public class Abc106_c
	{
#if !Development
		public static void Main(string[] args)
		{
			Abc106_c.Solve(args);
		}
#endif

		/*
		 S
 は 
1
 文字以上 
100
 文字以下の文字列.
K
 は 
1
 以上 
10
18
 以下の整数.
5000
 兆日後の文字列の長さは 
K
 文字以上である.
		 * */

		public static void Solve(string[] args)
		{
			var s = ReadLineStringOne();
			var k = ReadLineLongOne();

			var 五千兆 = 5000L * 10000 * 10000 * 10000;

			var c = s.Select(x => int.Parse(x.ToString()));

			foreach(var digit in c)
			{
				if (digit > 1)
				{
					Console.WriteLine(digit);
					return;
				}

				k--;
				if(k == 0)
				{
					Console.WriteLine("1");
					return;
				}
			}
		}

		public static string ReadLineStringOne() { return Console.ReadLine(); }
		public static List<string> ReadLineString() { return Console.ReadLine().Split(' ').ToList(); }
		public static List<int> ReadLineInt() { return Console.ReadLine().Split(' ').Select(str => int.Parse(str)).ToList(); }
		public static int ReadLineIntOne() { return Console.ReadLine().Split(' ').Select(str => int.Parse(str)).First(); }
		public static List<int> MultiReadLineInt(int lineNum) { return Enumerable.Range(0, lineNum).Select(_ => ReadLineIntOne()).ToList(); }
		public static long ReadLineLongOne() { return Console.ReadLine().Split(' ').Select(str => long.Parse(str)).First(); }
	}
}