#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"


int brCif(long long n){
	int k=0;
	while(n){
		k++;
		n=n/10;
	}
	return k;
}

int jeKaprer(long long n){
	long long kvadr=n*n;
	int d=brCif(n);
	long long stepen=1;
	
	for(int i=0;i<d;i++){
		stepen=stepen*10;
	}
	
	long long leviDeo=kvadr/stepen;
	long long desniDeo=kvadr%stepen;
	
	if(leviDeo+desniDeo==n){ return 1;}
	return 0;
}

int main(int argc, char *argv[]){
	int rank,np;
	MPI_Init(&argc,&argv);
	MPI_Comm_rank(MPI_COMM_WORLD,&rank);
	MPI_Comm_size(MPI_COMM_WORLD,&np);
	MPI_Barrier(MPI_COMM_WORLD);
	
	double time=-MPI_Wtime();
	
	for(long long i=rank+1;i<100000000;i=i+np){
		if(jeKaprer(i)==1){ printf("%lld\n",i);}
	}
	
	MPI_Barrier(MPI_COMM_WORLD);
	time=time+MPI_Wtime();
	if(rank==0){printf("%f\n",time);}
MPI_Finalize();

}


