Đề bài:
3620. Số phong phú
Mã bài: NKABD
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
Được gửi lên bởi: Ngô Minh Đức
Ngày: 2009-01-03
Thời gian chạy: 1s
Giới hạn mã nguồn: 50000B
Ngôn ngữ cho phép: Tất cả ngoại trừ: TCL SCALA ERL TECS JS
Nguồn bài: PTNK 10 Final Exam - Semester I, 2008
Solution:
#include
const long int max=100001;
long int l,r,kq=0;
long int tong[100001];
void Init(long int x);
int TongUoc(long int x);
int main()
{
scanf("%ld%ld",&l,&r);
Init(r);
long int i;
i=l;
r++;
while(i
{
if(tong[i]>i) kq++;
i++;
}
printf("%ld",kq);
// getch();
return 0;
}
void Init(long int x)
{
long int i,can,boi;
i=1;
can=(r/2)+1;
while(i
{
boi=2;
while((i*boi)
{
tong[i*boi]+=i;
boi++;
}
i++;
}
}
Không có nhận xét nào:
Đăng nhận xét