Mi solucion Ejercicio 4 nacional 2012 nivel 2
Mi solucion del ejercicio 4 del nacional 2012 nivel 2 que dice:
¿Cuántas ternas de numeros enteros positivos (X,Y,Z), todos menores que 1000,
hay tales que X² + Y² + Z² es un numero que termina en por lo menos seis ceros?
Codigo:
#include <iostream> #include <vector> #include <stdlib.h> #include <stdio.h> #include <time.h> using namespace std; //solucion de Ariel Nowik */ //¿Cuántas ternas de numeros enteros positivos (X,Y,Z), todos menores que 1000, //hay tales que X² + Y² + Z² es un numero que termina en por lo menos seis ceros?*/ int random(int start = 0,int stop = 1){ //funcion para generar numeros al azar stop = stop - 1; unsigned int iseed = (unsigned int)time(NULL); srand (iseed); int ran = rand(); return float(ran) / float(RAND_MAX) * (stop-start) + start; } int main(){ vector < vector <int> > sols; //for para x y z for (int x = 0;x < 1000;x++){ for (int y = 0;y < 1000;y++){ for (int z = 0;z < 1000;z++){ //se revisa si termina en 6 ceros x*x + y*y + z*z if ((x*x+y*y+z*z) % 1000000 == 0){ //se almacena la solucion vector <int> xyz; xyz.push_back(x); xyz.push_back(y); xyz.push_back(z); sols.push_back(xyz); } } } //para imprimir el porcentaje actual del progreso del programa int porc = x / 10; if (porc % 4 == 0){ for (int a = 0;a < 30;a++){ cout<<""<<endl; } for (int x = 0;x < porc;x++){ cout<<"#"; } cout<<""<<endl; cout<<porc<<"%"<<endl; } } //se imprime una solucion al azar y la cantidad de soluciones int num = random(0,sols.size()); cout<<"------------------------------------"<<endl; cout<<"SOLUCION DE PRUEBA AL AZAR (ID = "<<num<<") :"<<endl; cout<<"X = "<<sols[num][0]<<endl; cout<<"Y = "<<sols[num][1]<<endl; cout<<"Z = "<<sols[num][2]<<endl; cout<<"X * X + Y * Y + Z * Z = "<<sols[num][0]*sols[num][0]+sols[num][1]*sols[num][1]+sols[num][2]*sols[num][2]<<endl; cout<<"------------------------------------"<<endl; cout<<"RTA: Hay unas "<<sols.size()<<" soluciones"<<endl; cout<<"------------------------------------"<<endl; cout<<"escriba algo y presione enter para continuar . . ."<<endl; int h; cin>>h; }
Salida del programa:
------------------------------------
SOLUCION DE PRUEBA AL AZAR (ID = 67) :
X = 632
Y = 824
Z = 960
------------------------------------
RTA: Hay unas 133 soluciones
------------------------------------