ai giải giùm bài này với đang cần gấp

N

nguyenvy2097

dãy số tự nhiên được viết thành một dãy vô hạn trên đường thẳng. Hỏi số ở vị trí 1000 trong dãy trên là số nào?
vd:
1 2 3 4 5 6 7 8 9 10 11 12 ...
số ở vị trí thứ 13 là số :1

Ta có dãy số s = 1 2 3 4 5 6 7 8 9 10 1112....
Gọi i là các số thành phần, i thuộc {1,2,3,4,...,10,11,....,100,101,102....,1000,10001....}
Khi i có 1 chữ số: có tối đa 9 số, số chữ số = 9x1 = 9;
Khi i có 2 chữ số: có tối đa 9 chữ số chục (1->9) x 10 chữ số đơn vị (0 ->9) = 9x10 = 90 số, số chữ số = 90x2 = 180;
Khi i có 3 chữ số: có tối đa 9x10x10 = 900 số, số chữ số tối đa = 900x3 = 2700;
Dựa vào đó ta có thể tính từ vị trí k bất kỳ:
k < 10 ta có chữ số chính là k
k>10: ví dụ k = 31, ta tính 31 - 9 = 22, 22/2 = 11 dư 0 nghĩa là chữ số thứ 2 của số thứ 11 tính từ 10, chính là 20 => kết quả = 0;
k>189: ví dụ k = 191, ta tính 191 - 189 = 2, 2/3 = 0 dư 2 nghĩa là chữ số thứ 2 của số thứ 1 tính từ 100, => kq = 0;
Trường hợp trên k = 1000, ta tính 1000 - 189 = 811, 811/3 = 270 dư 1 nghĩa là chữ số thứ 1 của số thứ 270 tính từ 100. Ta có từ 100 tới 299 có 200 số, 70 số còn lại rơi vào khoảng 300 -> 369, số thứ 270 chính là 369 vậy kết quả cần tìm là 3.
 
1

11thanhkhoeo

F:=F[i-1] + số chữ số của i ;

khi F>k thì dừng lại và lấy chữ số thứ f-k+1 của i

Thân
 
Last edited by a moderator:
1

11thanhkhoeo

k là chữ số thứ k của dãy

Vd trong bài thì k=1000

mình dùng biến k để mở rộng bài toán

Thân
 
Top Bottom