bai 2 THTB CS 2020

25/03/2023

Tóm tắt:

cho Q truy vấn, mỗi truy vấn gồm số n. Nhiệm vụ của ta là tính độ dài của số n và tổng các chữ số n

Ý tưởng:

  1. Ta có thể dùng mod div để lấy từng chữ số

n mod 10: ra chữ số

n div 10: ra số còn lại

n = 135

while (m > 0) do

  1. 5 13

  2. 3 1

  3. 1 0

  4. Sử dụng xâu

Đối với bài này, số chữ số của n tối đa là 500 chữ số nên để được full điểm cần dùng ý tưởng "sử dụng xâu".

Cách làm:

tính độ dài của số n: length(n) với n : ansistring;

tính tổng từng số hạng:

  • lặp từ 1 -> length(n):

  • để biến kí tự n[i] từ char sang integer ta sẽ sử dụng: ord(n[i]) - ord('0')

Code
program number;
uses crt;
var n : ansistring;   //string luu toi da do dai la 255
    q : integer;
    i : integer;
    chuso : integer;
    p,d : integer;
    f,g : text;

BEGIN
    clrscr;
    assign(f, 'number.inp'); reset(f);
    assign(g, 'number.out'); rewrite(g);
    readln(f, q);
    while (q > 0) do
      begin
          q := q-1;
          readln(f, n);
          d := length(n);
          p := 0;
          //p : tong chu so
          for i := 1 to length(n) do
           begin
               chuso := ord(n[i]) - ord('0');
               p := p + chuso;
           end;
          writeln(g, d,' ',p);

      end;
    close(f);
    close(g);
END.