/* Autor: thiagoamm
   Data: 29/09/2005 */

/* Headers files */
#include<stdio.h>
#include<math.h>

/* Início mp */
int main(void)
{
    /* Função do número quadrado perfeito */
    int qp(int n)
    {
        int y;
        y = sqrt(n);
        
        if(pow(y,2) == n)
          return(1); /* V */
        else
          return(0); /* F */
    }
    
    /* Função do número capicúa */
    int capicua(int n)
    {
        int aux,soma;
        aux = n;
        soma = 0;
        
        while(aux != 0)
        {
             soma = soma * 10 + (aux % 10);
             aux = aux / 10;
        }
        if(soma == n)
          return(1); /* V */
        else
          return(0); /* F */
    }
    
    int num,option;
    
    printf("\n #########################################################################");    
    printf("\n Opcoes: \n");
    printf("\n 1 --> Verificar se um numero e quadrado perfeito e capicua ao mesmo tempo. \n");
    printf("\n 2 --> Verificar se e quadrado perfeito. \n");
    printf("\n 3 --> Verificar se e capicua. \n");
    printf("\n ----> Informe a opcao: ");
    scanf("%d",&option);
    printf("\n #########################################################################");

    for(num = 1; num <= 300; num++)
    {
       switch(option)
       {
            case 1:
                  if(qp(num) && capicua(num))       
                   printf("\n %d e qp e capicua \n",num);          
                  break;
            case 2:
                  if(qp(num))
                   printf("\n %d e qp \n",num);
                  break;
            case 3:
                 if(capicua(num))
                  printf("\n %d e capicua \n",num);
                 break;
       }     
    }
    printf("\n #########################################################################");
    printf("\n");
    return(0);
} /* Fim mp */
