ABCD=A^B*C^D vom Programm lösen lassen...?!

Kryptaesthesie

Erfahrenes Mitglied
Hallo.
Ich habe hier eine Gleichung und möchte die gerne lösen:


Gibt es eine vierstellige Zahl, für die folgendes gilt?

ABCD=A^B*C^D

A, B, C und D sind nicht notwendigerweise verschieden!


Bei meinem Entwurf komme ich leider nicht zu einem Ergebnis:
Code:
#include <iostream>
#include <stdio.h>
#include <math.h>

int main () {
	int i;
	unsigned char abcd[5];
	
	for(i = 1000; i < 10000; i++)
	{
		double a, b, c, d;
		double result;
		
		a = (double) abcd[0];
		b = (double) abcd[1];
		c = (double) abcd[2];
		d = (double) abcd[3];
		
		result = pow(a, b) * pow(c, d);
		if ( ((int) result) == i )
			printf ("abcd = a^b*c^d gilt fuer %04d\n", i);
	}
	
    return(0);
}

Beim compilieren mit gcc -o gleichung.x gleichung.cpp bekomme ich immer folgende Meldung:
/usr/bin/ld: Undefined symbols:
std::ios_base::Init::Init()
std::ios_base::Init::~Init()
___gxx_personality_v0
collect2: ld returned 1 exit status
Das Ganze unter OS X.
Stehe auf dem Schlauch, weiß nicht, wie ich weiter machen muss...?!


MfG Gerrit
 
Hallo!

bei dieser Problemgröße braucht man sich ja nicht wirklich anstrengen ;-)
C++:
// numerTest.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <iostream>
#include <math.h>

using namespace std;

bool check(int result, int i, int j, int k, int l) {
    return result == i * 1000 + j * 100 + k * 10 + l;
}

int _tmain(int argc, _TCHAR* argv[])
{
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            for (int k = 0; k < 10; k++) {
                for (int l = 0; l < 10; l++) {
                    int result = (int) pow(i,j) * (int) pow(k,l);
                    if (check(result, i, j, k, l)) {
                        cout << i << " " << j << " " << k << " " << l <<endl;
                    }
                }
            }
        }
    }
    return 0;
}

Ausgabe:
Code:
2 5 9 2

Gruß Tom
 
Wen es interessiert, ich habe es ohne x For-Schleifen gelöst:

Code:
// gleichung01.cpp

#include <iostream.h>
#include <Math.h>

int getTausender(int);
int getHunderter(int);
int getZehner(int);
int getEiner(int);


int main()
{
  int zahl = 999;
  int rechts;
  
  if(zahl == 999) {
    do
    {
      zahl++;
      rechts = pow(getTausender(zahl), getHunderter(zahl)) * pow(getZehner(zahl),getEiner(zahl));
    } while(zahl != rechts && zahl < 10000);
    cout << "Ergebnis: " << zahl << endl;
  }
  else
  { 
    cout << "Ungueltige Zahl!" << endl;
  }

  
  return(0);
}


int getTausender(int zahl)
{
  return(zahl / 1000);
}

int getHunderter(int zahl) 
{
  return(zahl - (getTausender(zahl) * 1000)) / 100;
}
  
int getZehner(int zahl) 
{
  zahl -= getTausender(zahl) * 1000;
  zahl -= getHunderter(zahl) * 100;
  return(zahl / 10);
}

int getEiner(int zahl) 
{
  zahl -= getTausender(zahl) * 1000;
  zahl -= getHunderter(zahl) * 100;
  zahl -= getZehner(zahl) * 10;
  return(zahl);
}
 
Zurück