1. 


/*
* Studiengruppe: IFB2C
* Martin Pesl
* Robert Reichart
* Elvin Uzeirovic
*/
import java.io.*;
import java.util.*;

class Main {

//Main Methode
public static void main(String[] args){

//Einlesen der Werte aus der Eingabe
Scanner in = new Scanner(System.in);

//erstellen einer Ausgabe
PrintWriter out = new PrintWriter(System.out);

//Array fr Maximale anzahl an werten
Integer[] werte = new Integer[100];

//bertragen der werte aus dem Scanner in den Array
for(int i = 0; in.hasNext(); i++){
werte[i] = in.nextInt();
}

//Ausgabe des Einleitungs Outputs
out.println("PERFECTION OUTPUT");

//Testen jedes Wertes und ausgabe des entsprechenden Ergebnisses
for(int i = 0; i < werte.length && werte[i] != 0; i++){
int sum = divsum(werte[i]);
if(sum == werte[i]){
out.printf("%5d PERFECT%n", werte[i]);
}else if(sum < werte[i]){
out.printf("%5d DEFICIENT%n", werte[i]);
} else {
out.printf("%5d ABUNDANT%n", werte[i]);
}
}
//Ausgabe des End outputs
out.println("END OF OUTPUT");
out.close();

}

//Methode um die Summe aller Teiler einer Zahl zu berechnen
static int divsum(int zahl){

//berechnung aller Teiler von n und bilden deren sSumme
int sum = 0;
int n = zahl/2;

//schleife um alle in frage kommenden werte durchzutesten
for(int i = 1; i <= n; i++){
//wenn i ein teiler von n ist zu sum hinzuaddieren und ausgeben
if(zahl%i == 0){
sum += i;
}
}
return sum;
}
}


2.

/* Problem : 382
* Author : Dennis Wilfert
* Author : Johann Studt
* Status : AC
* Runntime : 0.130
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

public static void main(String[] args){

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a=1;

System.out.println("PERFECTION OUTPUT");

/* Endlosschleife wird erst beendet wenn eine null eingegeben wird oder
* 100 eingaben erfolgt sind damit auch mehrzeilige Eingaben funktionieren.
*/
while(true){

// Zeilenweise auslesen
StringTokenizer line = null;
try{
line = new StringTokenizer(reader.readLine());
} catch (IOException e){
System.exit(0);
}

int counter = 0;

/* Aus jeder Zeile die einzelnen mit Leerzeichen getrennten Zahlen auslesen
* bis keine Zeichen mehr kommen
*/
while (line.hasMoreTokens()) {
counter++;

// Bei erreichen von 100 Eingaben das Programm beenden
if(counter == 100){
System.out.println("END OF OUTPUT");
System.exit(0);
}

// Array zum speichern der Teiler einer Zahl a
int[] divisorlist = new int[1];
divisorlist[0] = 1;

/* Naechstes Zeichen in der Variable a speichern, sollte es sich nicht
* um eine Zahl handeln, die Exception abfangen und a=61000 setzen
* (61000 ist auserhalb des erlaubten Wertebereichs)
*/
try{
a = Integer.parseInt(line.nextToken());
} catch (NumberFormatException e){
a = 61000;
System.exit(0);
}

// Wenn a==0 Programm beenden
if( a == 0 ){

try {
reader.close();
} catch (IOException e) {
System.exit(0);
}
System.out.println("END OF OUTPUT");
System.exit(0);
}

// Fall a=1 gesondert betrachten
if(a == 1)System.out.printf("%5d DEFICIENT\n", a);

/* Fuer alle Zahlen zwischen 2 und 60000 die Teiler berechnen und in einem
* array speicher
*/
if(a > 1 && a <= 60000 ){

for(int i = 2; i <= a/2; i++){

/* Neues temporaeres array anlegen um eins groesser als das alte
* array, die alten werte und den gefundenen Wert hineinspeichern und das
* neue array wieder als das alte setzen
*/
if(a%i == 0){

int[] newlist = new int[divisorlist.length+1];

for(int j = 0; j < divisorlist.length; j++){

newlist[j] = divisorlist[j];
}

newlist[newlist.length-1] = i;
divisorlist = new int[newlist.length];
divisorlist = newlist;
}
}

int sum = 0;

// Summe berechnen
for(int i = 0; i < divisorlist.length; i++){

sum += divisorlist[i];
}

// Je nach Fall die richtige Ausgabe ausgeben
if(sum == a)System.out.printf("%5d PERFECT\n", a);
if(sum < a)System.out.printf("%5d DEFICIENT\n", a);
if(sum > a)System.out.printf("%5d ABUNDANT\n", a);

}
}
}


}

}


3.

/*Gruppe: Julius Tschannerl
David Leib
IF2C
*Problem: 382
*Status: Accepted
*Runtime: 0.100
*/

import java.io.*;
import java.util.*;

public class Main {

private static int findDivisors(int number)
{
int sum = 0;
for (int i = 1; i <= (number/2); i++){
if (number%i == 0){
sum += i;
}
}
return sum;
}

private static void isPerfect(int i)
{
int j = findDivisors(i);
if (j == i){
System.out.printf("%5d PERFECT\n", i);
}
else if (j < i){
System.out.printf("%5d DEFICIENT\n", i);
}
else
System.out.printf("%5d ABUNDANT\n", i);
}

public static void main(String... args) throws IOException
{

System.out.println("PERFECTION OUTPUT");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
do{
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line);
while (st.hasMoreTokens()){
int i = Integer.parseInt(st.nextToken());
if (i == 0){
System.out.println("END OF OUTPUT");
System.exit(0);
}
isPerfect(i);
}
}while (true);

}
}


4.

/*
*    Markus Mohr, Rolf Schirm, Franz Mathauser
*    Datum: 24.03.09
*    IFB 2C
*    ACCEPTED: 382, 0.130
*/


//382 PERFECTION


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

public static void main(String... args) throws Exception {

BufferedReader reader = new BufferedReader(new
InputStreamReader(System.in));
long sum;
long buf;
int k=0;
boolean stop=false;
int[] numbers = new int[100];
String[] quality = new String[100];

while (k<100) {
String line = reader.readLine();
if (line == null) break;
StringTokenizer tokenizer = new StringTokenizer(line);

for (k=k;tokenizer.hasMoreTokens();k++) {
sum = 0;
numbers[k] = Integer.parseInt(tokenizer.nextToken());
//System.out.println("numbers: "+numbers[k]);
//System.out.println("k: "+k);
if(numbers[k] == 0) {
stop=true;
break;
}

for(int j=1; j < numbers[k]; j++) {
if(numbers[k]%j == 0) sum += j;
}

if(sum > numbers[k]) quality[k]="ABUNDANT";
if(sum < numbers[k]) quality[k]="DEFICIENT";
if(sum == numbers[k]) quality[k]="PERFECT";

}
if(stop) break;
}

System.out.println("PERFECTION OUTPUT");
for(int i=0;numbers[i]!=0;i++) System.out.printf("%5d
"+quality[i]+"\n",numbers[i]);
System.out.println("END OF OUTPUT");

}
}

5.

/*****************************************************************************
*
* Problem 382 Perfektion
*
* Autoren: Fabian Seidl, Marcel Sachse
* E-Mail: fabian.seidl@hm.edu
*
* Studiengrupee: IFB2C
* Fach: Angewandthe Mathematik
* Datum: 23.03.2009
*
*****************************************************************************/

import java.util.*;

public class P382_Perfektion {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);

System.out.println("PERFECTION OUTPUT");

while(scanner.hasNextInt())
{
int i = scanner.nextInt();

// bei Eingabe von 0 beenden
if(i==0) break;

// Fall 1 gesondert behandeln
if(i == 1)
{
System.out.printf("%5d DEFICIENT\n", i);
continue;
}

// Teiler suchen und aufsummieren
int sum =1;
for(int z = 2;z<=i/2;z++)
{
if(i%z==0) sum += z;
}

// Je nach Fall die richtige Ausgabe ausgeben
if(sum == i)System.out.printf("%5d PERFECT\n", i);
else if(sum < i)System.out.printf("%5d DEFICIENT\n", i);
else System.out.printf("%5d ABUNDANT\n", i);
}

System.out.println("END OF OUTPUT");
}
}

6.


	/**
	 * Probem: 382
	 * @author: Konrad Grzeca
	 * Status: 
	 * Runtime: 0.100
	 */

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws Exception {
		
		//Read input from line
		BufferedReader buin = new BufferedReader(new InputStreamReader(System.in));		
		String in = buin.readLine();

       
// ------------------ 8< ------------------------
        // Entgegen die Angabe muessen die Zahlen nicht nur auf einer Zeile stehen !
        // Wird auch nicht genau spezifiziert...
        String tmp;
        while((tmp = buin.readLine()) != null)
            in += " " + tmp;
        // ------------------ 8< ------------------------
		
		//Write the beginning of the output		
		System.out.println("PERFECTION OUTPUT");
		StringTokenizer tokenize = new StringTokenizer(in);
		while(true)
		{
			int sum = 0;
		
	        int line = Integer.parseInt(tokenize.nextToken());	//Get next Number
	        
	        if(line == 0) // Reached the first 0, break the loop
	        {	
	        	break;
	        }
				for(int k = 1; k < line; k++)
				{
					if(line%k == 0){ sum += k;}
				}
				
				if(sum == line){System.out.format("%5d", line); System.out.println("  PERFECT"); }
				if(sum > line) {System.out.format("%5d", line); System.out.println("  ABUNDANT");}
				if(sum < line) {System.out.format("%5d", line); System.out.println("  DEFICIENT");}
		}
	//The endline of the output
	System.out.println("END OF OUTPUT");

	}
}


7.

import java.io.*;
import java.util.*;

/**
* @group Lermer Florian, Sayli Hidir, Taskin Umut
* @contact lermer@gmail.de, hidirsayli@hotmail.de taskin_umut@yahoo.de
* @Problem_ID=382
* @Link http://icpcres.ecs.baylor.edu/onlinejudge/index.php?option=com_onlinejudge&Itemid=8&category=5&page=show_problem&problem=318
*
* @status Accepted
* @Version V1.33
*
* @problematical_issues - first, we tried to use the BufferedReader only
* - later, we have forgotten the formating the output properly
*
* @param args
* @throws Exception
*/
public class Main
{

//Global Variables
static ArrayList<Integer> list;

public static void main(String[] args)throws Exception
{
list=new ArrayList<Integer>();
Scanner sc=new Scanner(System.in);
int tmp =0;
boolean flag;

while(sc.hasNext())
{
tmp=sc.nextInt();
if(tmp==0)break;
list.add(tmp);
}
sc.close();
System.out.println("PERFECTION OUTPUT");
for (int a : list)
{
int sum=0;
for(int x=1;x<=a/2;x++) if(a%x==0)sum+=x;
if(sum==a){System.out.printf("%5d PERFECT\n",a);continue;}
if(sum<a){System.out.printf("%5d DEFICIENT\n",a);continue;}
if(sum>a){System.out.printf("%5d ABUNDANT\n",a);continue;}
}
System.out.println("END OF OUTPUT");
System.exit(0);
}


}

8.

/**
* Problem 382
* Runtime 0.140
* Accepted
*
* @author Andre Wolfram
* @author Christoph Miesel
* @author Robert Seilbeck
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Perfection {

/**
* @param args
*/
public static void main(String[] args) {

BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
try {
String line = reader.readLine();
System.out.println("PERFECTION OUTPUT");
while (line != null) {
StringTokenizer st=new StringTokenizer(line);
while(st.hasMoreTokens()){
int val = Integer.parseInt(st.nextToken());
if (val == 0) {
System.out.println("END OF OUTPUT");
System.exit(0);
}
long result = 0;
for (int n = 1; n <= val / 2; n++) {
if (val % n == 0) {
result += n;
}
}
if (result == val) {
System.out.printf("%5d PERFECT%n", val);
} else if (result < val) {
System.out.printf("%5d DEFICIENT%n", val);
} else {
System.out.printf("%5d ABUNDANT%n", val);
}
}
line = reader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}

}

}

9.

mport java.util.*;

/* Autoren: Mitterreiter Christian, Rolf Luigs
* Runtime: 0.160, Accepted
* Nummer: 382
*/

public class Main {

public static void main (String arg []) throws Exception {

Scanner scanner = new Scanner(System.in);

int[] input = new int[100001];
input[0]=1;
int k=0;

while (input[k]!=0) { //Speichert die eigegebenen Zahlen in ein Array
k++;
input[k]=scanner.nextInt();
}

System.out.println("PERFECTION OUTPUT");
int summe = 1;

for(int j = 1; j<input.length && input[j]!=0;j++) { //Durchläuft Array mit den zu testeneden Zahlen
summe = 1;
for(int e = 2; e<=input[j]/2;e++) { //Dividenten
if(input[j]%e == 0) { //Testet, ob Teiler
summe += e; //Summiert die Teiler zusammen
}
}
if (input[j]==1) {
System.out.printf("%5d DEFICIENT\n",input[j]);
}
else
{
if(input[j] == summe) {
System.out.printf("%5d PERFECT\n",input[j]);
}

if(input[j] > summe) {
System.out.printf("%5d DEFICIENT\n",input[j]);
}

if(input[j] < summe) {
System.out.printf("%5d ABUNDANT\n",input[j]);
}
}
}

System.out.println("END OF OUTPUT");
}

}

10.

/**
* Angewandte Mathematik, SS09, IFB 2C
* ACM Problem #382 (Perfection)
* Link: http://icpcres.ecs.baylor.edu/onlinejudge/external/3/382.pdf
*
* @author Christian Posselt
* @author Jonathan Schubert
* @version 1.2, 03/25/2009
*
* Status : Accepted
* Runtime: 0.100
*/


import java.io.*;
import java.util.StringTokenizer;

class Perfection382
{
public static void main(String[] args) throws Exception
{
int number = 0;
String res = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

System.out.println("PERFECTION OUTPUT");
//Read in
while(true)
{
String line = reader.readLine();
//end of input
if(line == null)
break;


StringTokenizer tokenizer = new StringTokenizer(line);

while(tokenizer.hasMoreElements())
{
res = tokenizer.nextToken();
number = Integer.parseInt(res);
//end of input
if(number == 0)
break;
Perfection382.TestPerfectNumber(number);
}
if(number == 0)
break;
}
System.out.println("END OF OUTPUT");
}

public static void TestPerfectNumber (int N)
{
//test special case one
if (N == 1)
{
System.out.printf("%5d DEFICIENT\n", N);
return;
}
int Sum = 1;
//sum up divisors
for(int i = 2; i <= N/2; i ++)
{
if(N % i == 0)
Sum += i;
}

//System out depending on the sum of devisors
if (Sum == N)
{
System.out.printf("%5d PERFECT\n", N);
return;
}
if (Sum < N)
{
System.out.printf("%5d DEFICIENT\n", N);
return;
}
System.out.printf("%5d ABUNDANT\n", N);
}

}