lời giải MDIGITS2 – First Number

Viết các số thập phân 1, 2,… liên tiếp thu được dãy số sau:

12345678910111213141516171819202122 …

Viết chương trình tìm vị trí xuất hiện đầu tiên của số N trong dãy số trên:

Input

Gồm duy nhất 1 số N, 1 ≤ N ≤ 100,000.

Output

Sô duy nhất là vị trí xuất hiện đầu tiên của số N trong dãy.

Sample

input
15

output
20

input
34

output
3

input
142

output
73

Hướng dẫn

Bạn sinh hết chuỗi “12345678910111213141516171819202122 …” rồi dùng hàm pos trong pascal để tìm thôi. độ dài chuỗi này là khá lớn nên phải sử dụng ansistring trong pascal. xem code sẽ hiểu rõ hơn:

Code tham khảo MDIGITS2 – First Number

const   fi='';
var
        f:text;
        n,i:longint;
        s1:ansistring;
        tam,nstr:string;
begin
        assign(f,fi); reset(f); readln(f,n); close(f);
        s1:='';
        for i:=1 to 100000 do
                begin
                        str(i,tam);
                        s1:=s1+tam;
                end;
        str(n,nstr);
        writeln(pos(nstr,s1));
end.

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *