Nguồn đề bài: http://vn.spoj.com/problems/NKABD/
1. Đề bài NKABD spoj
Trong số học, số phong phú là các số mà tổng các ước số của số đó (không kể chính nó) lớn hơn số đó. Ví dụ, số 12 có tổng các ước số (không kể 12) là 1 + 2 + 3 + 4 + 6 = 16 > 12. Do đó 12 là một số phong phú.
Bạn hãy lập trình đếm xem có bao nhiêu số phong phú trong đoạn [L,R].
Dữ liệu
Gồm 2 số L, R (1 <= L <= R <= 105)
Kết quả
Gồm 1 số nguyên duy nhất là số số phong phú trong đoạn [L, R].
Chú ý
Có 50% số test có 1 <= L <= R <= 103
Ví dụ
Dữ liệu
1 50
Kết quả
9
Giải thích:
Từ 1 đến 50 có 9 số phong phú là:
12, 18, 20, 24, 30, 36, 40, 42, 48
=========================
Bài này kêu gì làm đó thôi 😀 chỉ có phần kiểm tra ước. các bạn chỉ cần tìm từ 2->sqrt(n) thôi. vì cái này liên quan đến toán và đã được chứng minh nên mình ko nhắc lại.
2. code tham khảo NKABD spoj (pascal)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | program bt; const fi=''; fo=''; var f:text; a,b:longint; function check(n:longint):boolean; var i:longint; S:longint; begin s:=1; for i:=2 to trunc(sqrt(n)) do if n mod i = 0 then begin inc(s,i); if i<>n div i then inc(s,n div i); if s>n then exit(true); end; exit(s>n); end; procedure xuli; var i:longint; dem:longint; begin dem:=0; for i:=a to b do if check(i) then inc(dem); writeln(f,dem); end; begin assign(f,fi); reset(f); readln(f,a,b); close(f); assign(f,fo); rewrite(f); xuli; close(f); end. |
BCPP spoj PTIT
Bài viết liên quan
- [CF490C] HACKING CYPHER, P151PROF spoj Cipher
- 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