MÌnh xin đưa ra ý tưởng
+Số N có chia hết cho 4 ?
Bạn kiểm tra: If n mod 4=0 then n chia hết cho 4 ngược lại thì không chia hết
Cái này có nhiều cách, bạn có thể đổi ra chuỗi rồi lấy độ dài của nó, nhưng ở đây Vì n<=15000 nên không thể (string: 256 thôi). Nên dùng div đi
tức là 1 con số, trong khi nó khác không thì cứ chia cho 10 mỗi lần chia đếm số chữ số:
d:=0;
While n<>0 do
Begin
n:=n div 10;
inc(d);
End;
kết quả là d.
+Tổng các chữ số của N là bao nhiêu ?
Tương tự như câu trên, bạn tách n ra thành các chữ số rồi tính dồn tổng
t:=0 ( khởi đầu biến tổng rỗng)
While n<>0 do
begin
t:=t + (n mod 10);
n:=n div 10;
end;
kết quả là t.
như mình nói, bạn có thể đổi ra chuỗi rồi đi từ cuối chuỗi đến đầu chuỗi xong in ra từng "số". nhưng vì giới hạn vượt 256 nên dùng cách khác
cũng như cách trên lấy từng phần tử ra, đổi chữ số đó thành chuỗi xong in ra
while n<>0 do
begin
string(n mod 10, s) {đổi phần tử cuối ra chuỗi}
write(s) {in nó ra}
n:=n div 10;
end;
*
Nếu bạn làm 1 bài gồm mấy câu vậy thì gán tạm n cho m để xử lí, để giữ được n cho những câu sau. Có chỗ nào không hiểu thì bạn nói nhé. Đây chỉ là cách của mình, nếu có cách nào hay hơn thì mình xin học hỏi. Chúc bạn học tốt!