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:
Nội dung bài viết
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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. |
Bài viết liên quan
- NKH spoj – Tách Từ
- P156SUME spoj PTIT – ROUND 6E – Ước chung của chuỗi
- P156SUMH spoj PTIT – ROUND 6H – Kim cương
- Từ đối xứng pascal
- A. Two Substrings – Codeforces 306 (Div. 2)
- Kiểm tra xâu đối xứng pascal và C++
- PTIT013A spoj PTIT – Số may mắn
- P146SUMF spoj PTIT – Dãy số kì diệu
- P142SUMG spoj PTIT – Mã hóa
- MORSEDEC spoj – Morse decoding