Ejemplo n.º 1
0
int main(void) {
	int abundantNumbers[DEFICITMAX] = {0};
	int sumOfAbundantNumbers[DEFICITMAX] = {0};
	int i, j, sum = 0;

	// generate list of abundant numbers 1-DEFICITMAX
	for(i = 1; i <= DEFICITMAX; i++)
		if(isAbundant(i) == 1)
			abundantNumbers[i] = 1;

	// generate list of all numbers that are the sum of abundant numbers
	for(i = 1; i <= DEFICITMAX; i++) {
		if(abundantNumbers[i] > 0) {
			for(j = 1; i + j <= DEFICITMAX; j++) {
				if(abundantNumbers[j] > 0 && sumOfAbundantNumbers[i + j] != 1) {
					sumOfAbundantNumbers[i + j] = 1;
				}
			}
		}
	}

	// sum up all positive integers that cannot be written as the sum
	for(i = 1; i <= DEFICITMAX; i++) {
		if(sumOfAbundantNumbers[i] == 0) {
			sum += i;
		}
	}

	printf("\n\n%d", sum);

	return 1;
}
Ejemplo n.º 2
0
int main()
{
   std::vector<int> abund;
   int mark[28123] = {0};

   for(int i = 1; i < 28123; ++i)
      if(isAbundant(i))
         abund.push_back(i);

   for(int i = 0; i < abund.size(); ++i)
   {
      for(int j = i; j < abund.size(); ++j)
      {
         int val = abund[i] + abund[j];
         if(val < 28123)
            mark[val] = 1;
      }
   }

   long long sum = 0;
   for(int i = 0; i < 28123; ++i)
      if(mark[i] == 0)
      {
         std::cout << i << std::endl;
         sum += i;
      }

   std::cout << sum << std::endl;
   return 0;
}
Ejemplo n.º 3
0
int isSummable(int num) {
	int i, j;
	for(i = 12; i < num; i++ ) {
		if(isAbundant(i)) {
			for(j = 12; j < num; j++) {
				if(i+j > num) {
					break;
				}
				else if (isAbundant(j)) {
					if(i+j == num) {
						return 1;
					}
				}
			}
		}
	}
	return 0;
}
Ejemplo n.º 4
0
bool *generateAbundants(long n)
{
	bool *res = calloc((unsigned long) n, sizeof(bool));
	for(long i = 1; i < n; i++)
	{
		res[i] = isAbundant(i);
	}
	return res;
}
Ejemplo n.º 5
0
int main()
{
	int start_s = clock();

	const int count = 28123;
	bool abundant[count];
	
	for (int i = 0; i < count; ++i)
	{
		abundant[i] = isAbundant(i);
	}

	bool madeOfAbundant[count];
	for (int i = 0; i < count; ++i) { madeOfAbundant[i] = false; }

	for (int i = 0; i <= count/2; ++i)
	{
		if (abundant[i])
		{
			for (int j = i; j <= count; ++j)
			{
				if (madeOfAbundant[i + j] == false)
				{
					if (abundant[j])
					{
						madeOfAbundant[i + j] = true;
						//std::cout << i + j << std::endl;
					}
				}
				if (i + j > count)
				{
					break;
				}
			}
		}
	}
	int sum = 0;
	for (int i = 0; i < count; ++i)
	{
		if (madeOfAbundant[i] == false)
		{
			//std::cout << i << std::endl;
			sum += i;
		}
	}
	
	std::cout << sum << std::endl;

	int stop_s = clock();
	std::cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) * 1000 << std::endl;
	while (1);
}
Ejemplo n.º 6
0
int solve23() {
	vector<int> values;
	int total = 0;

	for( int i = 1; i <= 28123; ++i ) {
		total += i;

		if( isAbundant( i ) ) {
			values.push_back( i );
		}
	}

	int result = solve( values );
	return total - result;
}
Ejemplo n.º 7
0
int main() {
    int i, j = 0, k, result = 0;
    for(i = 1; i <= 28123; i++)
        a[i] = 0;
    for(i = 1; i <= 28123; i++){
        if(isAbundant(i))
            b[j++] = i;
    }
    for(i = 0; i < j; i++)
        for(k = i; k < j; k++){
            if(b[i] + b[k] <= 28123)
                a[b[i]+b[k]] = 1;
        }
    for(i = 1; i <= 28123; i++){
        if(a[i] == 0)
            result += i;
    }
    printf("%d\n", result);
    return 0;
}
Ejemplo n.º 8
0
int main(){
	int i, sum;
	int num, el;
	list abundant = NULL;
	list travel;
	int * array = (int *) malloc(sizeof(int)*(MAXIMO+1));
	for(i = 0 ; i <= MAXIMO ; i++){
		array[i] = i;
	}

	for(i = 0 ; i <= MAXIMO ; i++){
		if(isAbundant(i)){
			abundant = add_element(abundant, new_element(i));
		}
	}
	for(travel = abundant ; travel != NULL ; travel = travel->next){
		num = get_element(travel, true);
		for(el = num ; el != -1 ; el = get_element(travel, false)){
			if(num + el <= MAXIMO)
				array[num+el] = -1;
		}
	}

//	print_list(abundant);
//	for(i = 0, sum = 0 ; i <= MAXIMO ; i++){
//		printf("%d\n", array[i]);
//	}

	for(i = 0, sum = 0 ; i <= MAXIMO ; i++){
		if(array[i] != -1)
			sum += array[i];
	}
	printf("Answer: %d\n", sum);

	delete_list(abundant);
	free(array);
	return 0;
}
Ejemplo n.º 9
0
int main()
{
    std::set<int> abunNums;
    for (int i=11; i<28123; i++)
    {
        if (isAbundant(i))
        {
            abunNums.insert(i);
        }
    }

    int total = 0;
    for (int i=1; i<28123; i++)
    {
        for (std::set<int>::iterator it = abunNums.begin(); it!= abunNums.end(); ++it)
        {
            if (abunNums.find(i - *it) != abunNums.end())
            {
                break;
            }
            else if (i - *it < 12)
            {
                total+=i;
                break;
            }
            else if (it == (--abunNums.end()))
            {
                total+=i;
                break;
            }
        }
    }

    std::cout << total << std::endl;
    return 0;
}