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.