1.
/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, WS10/11
* Problem: 640 - Self Numbers
* Link: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=8&problem=581&mosmsg=Submission+received+with+ID+8484787
*
* @author Manuel Hager
* @version 1.0, 01/02/2011
*
* Method : Ad-Hoc
* Status : Accepted
* Runtime: 0.248
*/
#include <iostream>
#include <vector>
#include <algorithm>
#define LIMIT 1000000 - 44
using namespace std;
vector<int> all;
int i, j, value, currValue, size;
int main(int argc, char* argv) {
//calculate all none self-numbers.
for(i = 1; i < LIMIT; i++) {
value = i;
for(j = i; j > 0; j /= 10) {
value += (j % 10);
}
all.push_back( value );
}
sort (all.begin(), all.end());
value = 1;
size = (int)all.size();
//calculate all self-numbers.
for(i = 0; i < size; i++) {
currValue = all[i];
while(value < currValue) {
cout << value++ << endl;
}
value = currValue + 1;
}
return 0;
}
2.
/**
* FWP, Ausgewählte Probleme aus dem ACM Programming Contest, SS10
* Problem: 640 Selfnumbers
* Link: http://uva.onlinejudge.org/external/6/640.html
*
* @author Barny Porcio
* @version 1.0, 07/01/2010
*
* Method : -
* Status : Accepted
* Runtime: 1.008
*/
public class selfnumbers {
/**
* @param args
*/
public static void main(String[] args) {
boolean[] array = new boolean[1000001];
for (int i = 1; i<array.length;++i){
int selfnum = i;
int temp = i;
while(temp != 0){
selfnum += temp%10;
temp /= 10;
}
if (selfnum < array.length)
array[selfnum] = true;
}
for (int i = 1; i < array.length; ++i){
if (!array[i])
System.out.println(i);
}
}
}