Bài 1. Một chữ số
Hãy cộng tất cả các chữ sốcủa một số nguyên dương N cho trước. Nếu kết quảlà sốcó 1 chữsốthì kết thúc, ngược lại tiếp tục cộng các chữ số của tổng nhận được cho đến khi kết quả là số chỉ có 1 chữsố.Ví dụ: Với N = 1234567 → Tổng các chữ số là 1+2+3+4+5+6+7=28 → Quá tình tiếp tục 2+8=10 → Quá trình tiếp tục 1+0=1. Dừng.
Yêu cầu: Dữliệu vào là tệp ONEDIGIT.INPgồm một sốN duy nhất.Dữliệu ra là tệp ONEDIGIT.OUT gồm mộ t số duy nhất là kết quả tìm được
#include<bits/stdc++.h>
using namespace std;
int tongchuso(int so){
int soTemp;
int tong = 0;
soTemp = so;
while (soTemp != 0) {
tong += soTemp % 10;
soTemp /= 10;
}
return tong;
}
int main()
{
int n;
cin>>n;
while(n>=10){
n=tongchuso(n);
}
cout<<n;
//samon247
return 0;
}
uses crt;
var n:string; d:text; i,tong,a,e:longint;
begin
clrscr;
assign(d,’ONEDIGHT.INP’);reset(d);
readln(d,n);
close(d);
assign(d,’ONEDIGHT.OUT’);rewrite(d);
repeat
tong:=0;
for i:=1 to length(n) do
begin
val(n[i],a,e);
inc(tong,a);
end;
str(tong,n);
until length(n)=1;
writeln(d,n);
close(d);
end.
Giải thích:
Khi mới vào mình đọc n là xâu luôn để tiện tính tổng nhé
Chạy cho đến khi còn 1 chữ số:
Cộng các chữ số:
-Mình dùng hàm val(đổi từ xâu ra số).
-Cộng các số đó lại(ta có tổng các chũ số của n);
Ta chuyển tổng ra xâu lại với hàm str(ngược lại với val) để lầm sau có thể thực hiện tiếp.
Nếu có gì không hiểu hay code có chỗ nào chưa hợp lí thì các bạn hãy để lại bình lận nhé
!!! :))))
Mình có một số text cho các bạn tham khảo: