Powered By Blogger

Tìm kiếm Blog này

Thứ Hai, 12 tháng 7, 2010

Link đề bài: http://vn.spoj.pl/problems/NKABD/

Đề 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