[백준] 1790번 : 수 이어 쓰기 2 - C#

강재원·2022년 10월 23일
0

[코딩테스트] C#

목록 보기
145/200



https://www.acmicpc.net/problem/1790

using System;

class Program
{
    static long count(long t){
        long num=1;
        for(int i=0;i<t;i++){
            num*=10;
        }
        return num;
    }
    static void Main() {
        string[] s=Console.ReadLine().Split(' ');
        long n=long.Parse(s[0]);
        long k=long.Parse(s[1]);
        int t=1;
        long num=0;
        long r=0;
        long e=0;
        while(true){
            long max=(count(t)-count(t-1))*t;
            
            if(num+max>=k){
                k-=num;
                r=k/t;
                e=k%t;
                n-=r;
                break;
            }
            num+=max;
            n-=count(t)-count(t-1);
            t++;
        }
        r+=count(t-1)-1;
        if(n<0 || n==0 && e!=0) Console.Write("-1");
        else if(e==0){
            string m=r.ToString();
            Console.Write("{0}",m[m.Length-1]);
        }
        else{
            r+=1;
            string m=r.ToString();
            Console.Write("{0}",m[(int)e-1]);
        }
    }
}
profile
개념정리 & 문법 정리 & 알고리즘 공부

0개의 댓글