1. 

/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10
* Problem: 382 Perfection
* Link: http://uva.onlinejudge.org/external/3/382.pdf
*
* @author Robert Reichart
* @version 1.0, 19/03/2010
*
* Status : Accepted
* Runtime: 0.104
*/

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 fuer Maximale anzahl an werten
Integer[] werte = new Integer[100];
//uebertragen 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.


 

/**

* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10

* Problem: 382 Perfection

* Link: http://uva.onlinejudge.org/external/3/382.pdf

*

* @author Viktoriya Ryabova

* @version 1.0, 04/21/2010

*

* Method : Ad-Hoc

* Status : accepted

* Runtime: 0.144

*/

 

import java.util.Scanner;

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

Scanner sc = new Scanner (System.in);

int eingabe []= new int[100];

//werte in array einlesen

for(int i=0; sc.hasNext(); i++){

eingabe[i] = sc.nextInt();

if(i==0) System.out.println("PERFECTION OUTPUT");

if (eingabe[i]!=0){

//vergleichen die summe mit dem wert selbst

if(eingabe[i]==countSum(eingabe[i]))System.out.println((printFormat(eingabe[i]))+ eingabe[i] +" PERFECT");

else if (eingabe[i]>countSum(eingabe[i]))System.out.println((printFormat(eingabe[i]))+ eingabe[i] +" DEFICIENT");

else System.out.println((printFormat(eingabe[i]))+ eingabe[i] +" ABUNDANT");

}

else {

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

}

}

}

 

private static int countSum (int number){

int sum=0;

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

if(number%i==0){

sum+=i;

}

}

return sum;

}

public static String printFormat(int number){

String spaceCount = String.valueOf(number);

String str="";

for (int i=1; i<6-spaceCount.length(); i++){

str += " ";

}

return str;

}

}

3.

/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10
* Problem: 382 Perfection
* Link: http://uva.onlinejudge.org/external/3/382.pdf
*
* @author M. Lambeck / M. Haus
* @version 1.0, 10/06/2010
*
* Status : Accepted
* Runtime:
*/

import java.util.Scanner;

public class Main
{
static int next = 0;
static boolean intro = true;


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


while(true)
{
int num = st.nextInt();

if (num == 0)
break;

doit(num);
}


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


private static void doit(int num)
{

if (intro)
{
System.out.println("PERFECTION OUTPUT");
intro = false;
}


if (num == 1)
{
System.out.printf("%5d  DEFICIENT%n",num);
return;
}


int tmp = (int) (Math.sqrt(num) + 0.001);
int sum = 1;


while (tmp > 1)
{


if (num % tmp == 0)
{
sum += tmp;
sum += (num / tmp);


}
tmp--;
}



if (sum >= num)
{
if (sum == num)
{
System.out.printf("%5d  PERFECT%n", num);


} else
{
System.out.printf("%5d  ABUNDANT%n",num);
}
} else
{
System.out.printf("%5d  DEFICIENT%n",num);
}


}
}