Bài 3. SỐ MAY MẮN (5 điểm) 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 ( 11 ( 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); dòng tiếp theo là tương ứng với số ghế M của N 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: 5 0 3 29 21 20 LUCKY.OUT: 2

2 câu trả lời

Const Fi='LUCKY.INP';
      Fo='LUCKY.OUT';
Type manga = array[1..1000] of longint;
Var f,g: text;
    A,B: manga;
    n,i,j,max,so: longint;

Function tongcs(a: longint): longint;
Var s: longint;
Begin
        s:=0;
        While a<>0 do
        Begin
                s:=s+a mod 10;
                a:=a div 10;
        End;
        tongcs:=s;
End;

Function SCC(a: longint): byte;
Begin
        While a>9 do
                a:=tongcs(a);
        SCC:=a;
End;

Function dem(a: manga; n,x: longint): longint;
Var i,c: longint;
Begin
        c:=0;
        For i:=1 to n do
                If A[i]=x then inc(c);
        dem:=c;
End;

Begin
        Assign(f,Fi); Reset(f);
        Assign(g,Fo); Rewrite(g);
        Readln(f,n);
        For i:=1 to n do Readln(f,A[i]);

        For i:=1 to n do
                A[i]:=SCC(A[i]);
        B[i]:=0;
        For i:=1 to n do
                For j:=i to n do
                        If A[i]=A[j]then inc(B[i]);
        max:=B[1];
        For i:=1 to n do
                If B[i]>max then max:=B[i];
        Write(g,max);
        Close(f);
        Close(g);
End.

Mình viết code C++ nhé :)

#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;

Câu hỏi trong lớp Xem thêm
4 lượt xem
1 đáp án
20 giờ trước