Nguồn đề bài: http://www.spoj.com/PTIT/problems/BCTEST11/
Nội dung bài viết
1. Đề bài BCTEST11 spoj PTIT
Bờm rất yêu thích các số may mắn. Ta biết rằng một số gọi là số may mắn nếu biểu diễn thập phân của nó chỉ chứa các chữ số may mắn là 4 và 7. Ví dụ: Các số 47,744,4 là số may mắn còn 5,17,467 không phải là số may mắn.
Từ định nghĩa trên, Bờm định nghĩa ra khái niệm số chia may mắn. Một số là số chia may mắn nếu nó chia hết cho ít nhất một số may mắn. Ví dụ: 8,14,.. Bạn hãy giúp Bờm xác định xem số N có phải là số chia may mắn hay không?
Dữ liệu:
Một số nguyên duy nhất N (1≤N≤1000). .
Kết quả:
In ra “YES” nếu N là số chia may mắn, hoặc “NO” nếu ngược lại.
Ví dụ:
INPUT | OUTPUT |
47 | YES |
INPUT | OUTPUT |
16 | YES |
INPUT | OUTPUT |
78 | NO |
2. Hướng dẫn BCTEST11 spoj PTIT
Bạn chỉ cần liệt kê hết tất cả số may mắn từ [1->1000] sau đó thực hiện kiểm tra bình thường là dc. 😀 bạn có thể tính ở ngoài rồi dùng mảng hằng để vào là được.
3. Code tham khảo BCTEST11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | const fi=''; nmax=1000; A:array[1..14] of word=(4, 7, 44, 47, 74, 77, 444, 447, 474, 477, 744, 747, 774, 777); type data=longint; var f:text; N,i:data; begin assign(f,fi); reset(f); readln(f,n); close(f); for i:=1 to 14 do if n mod a[i]= 0 then begin writeln('YES'); halt; end; writeln('NO'); end. |
Bài viết liên quan
- P167PROE spoj PTIT – ROUND 7E – Phương trình
- PTIT016E spoj PTIT – ACM PTIT 2016 E – Kỳ thi ACM/ICPC
- PTIT016D spoj PTIT- ACM PTIT 2016 D – Biểu thức
- Spoj PTIT PTIT016C – ACM PTIT 2016 C – Chẵn lẻ
- PTIT127A spoj PTIT – Tổ chức kì thi
- P164SUMI spoj PTIT – ROUND 4I – Next round
- PTIT135J spoj PTIT – Tính lãi suất
- P156SUME spoj PTIT – ROUND 6E – Ước chung của chuỗi
- P156PROE spoj PTIT – ROUND 6E – Phép dịch
- P156SUMH spoj PTIT – ROUND 6H – Kim cương
cảm ơn ad đã đăng.
Nhưng nếu 1 < N << 10^18(unsigned long long in c/c++) thì liệt kê như thế không ổn.
add có cách nào tổng quát hơn không?