Trang chủ Tin Học Lớp 8 Cho hai số nguyên dương 𝑚 và 𝑛. Hãy lập...

Cho hai số nguyên dương 𝑚 và 𝑛. Hãy lập trình đếm số các chữ số 0, 1, 2, …, 9 của tất cả các số nằm giữa hai số 𝑚 và 𝑛, kể cả hai số 𝑚 và 𝑛. Dữ liệu vào:

Câu hỏi :

Cho hai số nguyên dương 𝑚 và 𝑛. Hãy lập trình đếm số các chữ số 0, 1, 2, …, 9 của tất cả các số nằm giữa hai số 𝑚 và 𝑛, kể cả hai số 𝑚 và 𝑛. Dữ liệu vào: Tệp văn bản NDIGIT.INP gồm một dòng ghi hai số 𝑚 và 𝑛 cách nhau một dấu cách có giá trị không vuột quá 10^6. Kết quả: Ghi ra tệp văn bản NDIGIT.OUT 10 số nguyên trên một dòng theo thứ tự là số lượng các số từ 0 đến 9. Ví dụ: 𝑚=10, 𝑛=12 thì các số cần đếm chữ số là: 10, 11, 12 gồm có: 1 chữ số 0; 4 chữ số 1 và 1 chữ số 2. DN.INP DN.OUT 10 12 1 4 1 0 0 0 0 0 0 0

Lời giải 1 :

Uses crt;
Var 
    m,n,i,a,k: LongInt;
    so:array[0..9] of integer;
Begin
    clrscr;
    repeat
    writeln('Nhap so nguyen duong m va n: '); readln(m,n);
    until(m<=1000000)and(n<=1000000);       {Nhập mn trong khoảng 10^6 nếu không lặp lai}
    for i:=0 to 9 do so[i]:=0;                               {Gán giá trị phần tử của mảng để đếm chữ số}
    if m>n then begin i:=m;m:=n;n:=i; end;    {Nếu số trước lớn hơn số sau thì hoán đổi giá trị}
    for i:=m to n do                                         {Xét các số từ m đến n}
        begin
        a:=i;                            {Sử dụng a thay thế vì trong vòng lặp i không được thay đổi giá trị}
        while (a<>0) do
            begin
            k:=a mod 10;                  {Tìm chữ số bằng cách chia lấy phần dư}
            so[k]:=so[k]+1;              {Cộng thêm vào nhóm của số tìm được}
            a:=a div 10;                    {Bỏ chữ số vừa tìm được khỏi a}
            end;
        end;
    for i:=0 to 9 do write(so[i],' ');          {In ra mảng chữ số đã được đếm}
    readln;
End.

Thảo luận

-- giai thich cach lam voi ban
-- Mình đặt trong cặp dấu {} rồi nha
-- https://hoidap247.com/cau-hoi/3385277 giúp với ạ giải thích luôn nha
-- helpp :<<
-- Ok rồi nha
-- https://hoidap247.com/cau-hoi/3427053
-- https://hoidap247.com/cau-hoi/3517931

Lời giải 2 :

var a:array[0..trunc(1e6+7)] of longint;
    i,l,r,j:longint;
    s,st:ansistring;
    ch:char;
begin
assign(input,'NDIGIT.inp');reset(input);
assign(output,'NDIGIT.out');rewrite(output);
readln(l,r);
fillchar(a,sizeof(a),0);
if r-l=0 then
  begin
    str(l,s);
    st := st+s+s;
    for i := 1 to length(st) do inc(a[ord(st[i])]);
    for ch := '0' to '9' do write(a[ord(ch)],#32);
  end
else
 begin
  for i := l to r do
   begin
    str(i,s);
    st := st + s;
    for j := 1 to length(st) do inc(a[ord(st[j])]);
    st := '';
   end;
  for ch := '0' to '9' do
  write(a[ord(ch)],#32);
end;
close(input);close(output);
end.

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần, sang năm lại là năm cuối cấp áp lực lớn dần nhưng các em vẫn phải chú ý sức khỏe nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK