Computer Science Canada

CCC 1996 Stage1: Problem A: Deficient, Perfect, and Abundan

Author:  Tony [ Fri Jan 03, 2003 7:05 pm ]
Post subject:  CCC 1996 Stage1: Problem A: Deficient, Perfect, and Abundan

Write a program that repeatedly reads a positive integer, determines if the integer is deficient, perfect, or abundant, and outputs the number along with its classification.

A positive integer, n, is said to be perfect if the sum of its proper divisors equals the number itself. (Proper divisors include 1 but not the number itself.) If this sum is less that n, the number is deficient, and if the sum is greater than n, the number is abundant.

The input starts with the number of integers that follow. For each of the following integers, your program should output the classification, as given below. You may assume that the input integers are greater than 1 and less than 32500.

Sample input


Sample output
4 is a deficient number.

6 is a perfect number.

12 is an abundant number.

Tony's Comment

Proper divisor is a number by which a number can be divided (excluding itself but including 1)

so for 4
1+2 = 3 --- 3<4 so 4 is deficient

for 6
1+2+3 = 6 --- 6=6 so 6 is perfect

for 12
1+2+3+4+6 = 16 --- 16>12 so 12 is abundant

Author:  Tony [ Fri Jan 03, 2003 7:08 pm ]
Post subject:  official solution

here's the official solution

C Source Code
# include <stdio.h>

FILE * infp;
FILE * outfp;

int t, /* number of test cases */
i, /* a counter */
n, /* a number to be classified */
sum; /* sum of divisors of n */

infp = fopen( "", "r");
outfp = fopen( "dpa.out", "w");

fscanf(infp, "%d\n", &t);
while (t>0) {

fscanf(infp, "%d\n", &n);
for (i=1; i<=n/2; i++ ) {
if (n%i==0) sum=sum+i;
if (sum < n) fprintf(outfp,"%d is a deficient number.\n",n);
else if (sum ==n) fprintf(outfp,"%d is a perfect number.\n",n);
else /* sum > n */ fprintf(outfp,"%d is an abundant number.\n",n);

t--; fprintf(outfp,"\n");

Author:  Tony [ Fri Jan 03, 2003 7:23 pm ]
Post subject:  unofficial solution

since its a Stage1 problem, using turing is allowed. Here's a solution I came up with using Turing.

Basically its the same solution, but transfered into turing syntax. See file attached.

if you're going to run the solution, make sure to create a file called in same folder and fill it with atleast 1 integer number. Program output will be saved in file called data.out which you don't have to create.