Problem:
Score : 200 points

Problem Statement

Having learned the multiplication table, Takahashi can multiply two integers between 1 and 9 (inclusive) together.

Given an integer N, determine whether N can be represented as the product of two integers between 1 and 9. If it can, print Yes; if it cannot, print No.

Constraints

1 \leq N \leq 100

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

If N can be represented as the product of two integers between 1 and 9 (inclusive), print Yes; if it cannot, print No.

Sample Input 1

10

Sample Output 1

Yes

10 can be represented as, for example, 2 \times 5.

Sample Input 2

50

Sample Output 2

No

50 cannot be represented as the product of two integers between 1 and 9.

Sample Input 3

81

Sample Output 3

Yes

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

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

int compara(const void * a, const void * b){
  int x = *(int *) a;
  int y = *(int *) b;
  return x>y?1:x<y?-1:0;
}

void soma(int *v, int *r, int a){
  r[0] = 1;
  r[1] = 1;
  for (int i = 0; i < a; i++) {
    printf("%d\n",v[i]);

    if (i>=(a+1)/2) {
      r[1]*=v[i];
    }else{
      r[0]*=v[i];
    }
  }
}

int dec(int *v,int num1) {
  int k=0,j,i;
  for (i = 2; i <= num1;) {
    if (num1%i==0) {
      v[k]=i;
      num1/=i;
      k++;
    }else{
      i++;
    }
  }
  qsort(v,k,sizeof(v[0]),compara);
  return k;
}

int main(int argc, char const *argv[]) {
  int a, b,j;
  scanf("%d",&a);
  int vec[a],r[2];
  int i = dec(vec,a);

  if (i>1) {
    soma(vec,r,i);

    if (r[0]>9 ||r[1] >9) {
      printf("No\n");
    }else{
      printf("Yes\n");
    }
  }else{
    if (r[0] >9) {
      printf("No\n");
    }else{
      printf("Yes\n");
    }
  }

  return 0;
}