标签:
CCC加拿大高中生信息学奥赛
CODEVS[3312]——CCC 1996 01 Deficient, Perfect, and Abundant ——http://codevs.cn/problem/3312/
POJ[1928]——Perfection——http://poj.org/problem?id=1528
读入一个正整数n,判断整数是完数,亏数还是盈数。
•如果它的约数的和等于它本身,那它便是一个完数(Perfect)(约数包含1,但不包含它本身)。
•如果它的约数的和小于它本身,那它便是一个亏数(Deficient)(约数包含1,但不包含它本身)。
•如果它的约数的和大于它本身,那它便是一个盈数(Abundant)(约数包含1,但不包含它本身)。
输入文件共两行,
第一行为一个正整数n,
第二行为n个正整数,中间用空格隔开。
输出为n行,分别为第1..n个数的类别。
完数:Perfect
亏数:Deficient
盈数:Abundant
3
4 6 12
4 is a deficient number.
6 is a perfect number.
12 is an abundant number.
1<=n<=2^31-1
15 28 6 56 60000 22 496 0
PERFECTION OUTPUT 15 DEFICIENT 28 PERFECT 6 PERFECT 56 ABUNDANT 60000 ABUNDANT 22 DEFICIENT 496 PERFECT END OF OUTPUT
利用数论知识快速计算一个数的约数和,详见程序函数。
CODEVS:
var t,x:longint; function ans(n:longint):longint; var i:longint; begin ans:=0; for i:=1 to n do begin if (i*i=n) then begin ans:=ans+i; break; end; if (i*i>n) then break; if (n mod i=0) then ans:=ans+i+n div i; end; end; procedure main; var anss,n:longint; begin read(n); anss:=ans(n)-n; if anss<n then writeln(n,‘ is a deficient number.‘); if anss=n then writeln(n,‘ is a perfect number.‘); if anss>n then writeln(n,‘ is an abundant number.‘); end; begin readln(t); for x:=1 to t do main; end.
POJ:
var t,x,n:longint; function ans(n:longint):longint; var i:longint; begin ans:=0; for i:=1 to n do begin if (i*i=n) then begin ans:=ans+i; break; end; if (i*i>n) then break; if (n mod i=0) then ans:=ans+i+n div i; end; end; procedure main; var anss,x,i:longint;s:ansistring; begin anss:=ans(n)-n; str(n,s); x:=length(s); for i:=1 to 5-x do write(‘ ‘); if anss<n then writeln(n,‘ DEFICIENT‘); if anss=n then writeln(n,‘ PERFECT‘); if anss>n then writeln(n,‘ ABUNDANT‘); end; begin writeln(‘PERFECTION OUTPUT‘); while true do begin read(n); if n=0 then begin writeln(‘END OF OUTPUT‘); halt; end; main; end; end.
[CCC 1996 01]Deficient, Perfect, and Abundant
标签:
原文地址:http://www.cnblogs.com/yangqingli/p/4906400.html