P145PROC spoj PTIT – ROUND 5C – Modulo

Nguồn đề bài: http://www.spoj.com/PTIT/problems/P145PROC/

1. Đề bài P145PROC spoj

Cho 2 số nguyên A và B, A modulo B là phần dư của A khi chia cho B. Ví dụ, 7, 14, 27 và 38 lần lượt là 1, 2 , 0 và 2 theo modulo 3.

Cho trước một dãy số có 10 phần tử. Bạn hãy viết chương trình tính số lượng số giá trị khác nhau trong dãy sau khi lấy modulo 42.

Input

Gồm 10 số nguyên không âm <= 1000.

Output

Ghi ra một số nguyên duy nhất là số lượng giá trị có trong dãy số sau khi lấy MOD 42.

Example

Test 1:

Input:

1
2
3
4
5
6
7
8
9
10

Output:

10

Test 2:

Input:

42
84
252
420
840
126
42
84
420
126

Output:

1

 

Test 3:

Input:

39
40
41
42
43
44
82
83
84
85

Output:

6

2. Gợi ý giải bài P145PROC spoj PTIT

– bài này khá đơn giản, bạn chỉ cần sử dụng mảng đánh dấu là được

3. Code tham khảo P145PROC spoj PTIT

a. Code c++

#include <stdio.h>
#include <memory.h>
using namespace std;

int main()
{
    int i,sum=0,x, a[43];
    memset(a,0,sizeof(a));
    for (i=1; i<=10; i++)
    {
        scanf("%d",&x);
        a[x%42]++;
    }
    for (i=0; i<=42; i++)
        if (a[i]!=0) sum++;
    printf("%d",sum%42);
}

b. Code pascal

const   fi='';
type    data=longint;
var
        f:text;
        A:array[0..42] of data;
        i,x:data;
        sum:data=0;
begin
        assign(f,fi); reset(f);
        fillchar(a,sizeof(a),0);
        for i:=1 to 10 do
                begin
                        readln(f,x);
                        inc(a[x mod 42]);
                end;
        close(f);
        for i:=0 to 42 do
                if a[i]<>0 then
                        sum:=sum+1;
        writeln(sum mod 42);
end.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *