Bài 9: Cấu trúc rẽ nhánh

0o0 Nhok kawaii 0o0

Công ty Tin học ACB tổ chức buổi hội thảo nhằm giới thiệu phần mềm mới của công ty. Buổi hội thảo có N khách mời tham dự và trên mỗi ghế ngồi có ghi số ghế là M. Trước khi kết thúc hội thảo, công ty yêu cầu các khách mời tự tìm cho mình một số cuối cùng dựa trên số ghế mình ngồi (số cuối cùng được xác định là tổng các chữ số của số đó, sau đó lại tính tổng các chữ số của số mới tạo được cho đến khi chỉ còn một chữ số duy nhất). Sau khi kết thúc hội thảo, công ty tổ chức trao quà cho các khách mời có số cuối cùng trùng với số may mắn (số may mắn là số mà có số lượng số cuối cùng nhiều nhất do các khách mời tìm được).
Ví dụ: Số ghế là M = 29 thì số cuối cùng được tạo ra là 2 (29=2+9 -> 11; 11=1+1 = 2).
Yêu cầu: Gọi K là số may mắn hãy tìm số may mắn đó? (nếu có nhiều số lượng số cuối cùng bằng nhau thì chọn số cuối cùng mà khách tìm được có giá trị nhỏ nhất.
Dữ liệu vào: File văn bản LUCKY.INP
Dòng thứ nhất là số N (1 ≤N≤105);
N dòng tiếp theo là tương ứng với số ghế M của khách mời (0 ≤ M ≤ 109).
Dữ liệu ra: File văn bản LUCKY.OUT
- Gồm một số K cần tìm.
Ví dụ:
LUCKY.INP PTICH.OUT
5 2
0
3
29
21
20



Nguyễn Việt Hoàng
2 tháng 3 2020 lúc 19:08

#include <fstream>
using namespace std;
int gia_tri_cuoi(int x)
{
if (x < 10) return x;
int tong = 0;
while (x > 0)
{
tong += x % 10;
x /= 10;
}
return gia_tri_cuoi(tong);
}
int main()
{
ifstream fin("LUCKY.INP");
ofstream fout("LUCKY.OUT");
int a[105];
int N;
fin >> N;
for (int i = 0; i<N; ++i) fin >> a[i];
int LUCKY[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for (int i = 0; i<N; ++i) ++LUCKY[gia_tri_cuoi(a[i])];
int max = -1;
int ketqua = 0;
for (int i = 0; i<10; ++i)
{
if (LUCKY[i] > max)
{
ketqua = i;
max = LUCKY[i];
}
}
fout << ketqua << endl;
return 0;
}

Bình luận (0)
 Khách vãng lai đã xóa
Minh Lệ
2 tháng 3 2020 lúc 20:43

program hotrotinhoc;

const fi='LUCKY.INP';

fo='LUCKY.OUT';

var n,k,a,i,max,d: byte;

dem,m,m1: array[0..105] of integer;

f: text;

function tong(x: byte): integer;

var t,t1: integer;

begin

t:=0; t1:=0;

while x<>0 do

begin

t:=t+(x mod 10);

x:=x div 10;

end;

while t<>0 do

begin

t1:=t1+(t mod 10);

t:=t div 10;

end;

tong:=t1;

end;

procedure ip;

begin

assign(f,fi);

reset(f);

readln(f,n);

for i:=1 to n do

read(f,m[i]);

close(f);

end;

procedure out;

begin

assign(f,fo);

rewrite(f);

for i:=1 to n do

begin

m1[i]:=tong(m[i]);

inc(dem[m1[i]]);

end;

max:=0;

for i:=1 to n do

if dem[i]<>0 then

if max<=dem[i] then max:=dem[i];

write(f,max);

close(f);

end;

begin

ip;

out;

end.

Bình luận (0)
 Khách vãng lai đã xóa

Các câu hỏi tương tự
nguyễn hoàng lê thi
Xem chi tiết
0o0 Nhok kawaii 0o0
Xem chi tiết
Hàn Nhật Hạ
Xem chi tiết
Ngọc My
Xem chi tiết
Huỳnh Thái Dân
Xem chi tiết
Khánh Linh
Xem chi tiết
nguyễn hoàng lê thi
Xem chi tiết
nguyễn hoàng lê thi
Xem chi tiết
The Anh Pham
Xem chi tiết