CCCPaste

Jo Number

#include 

int n = 500000000, i;
int arr[100000];

void swap(int* a, int* b) { 
    int t = *a; 
    *a = *b; 
    *b = t; 
} 

int partition (int arr[], int low, int high) { 
    int pivot = arr[high]; 
    int i = (low - 1);
    for (int j = low; j <= high- 1; j++) { 
        if (arr[j] <= pivot) { 
            i++;
            swap(&arr[i], &arr[j]); 
        } 
    } 
    swap(&arr[i + 1], &arr[high]); 
    return (i + 1); 
} 
  
void qSort(int arr[], int l, int h) { 
    if (l < h) { 
        int pi = partition(arr, l, h); 
        qSort(arr, l, pi - 1); 
        qSort(arr, pi + 1, h); 
    } 
} 

void sJo(int div){
	arr[i++] = div;
	if(div > n){
		return;
	}else{
		return sJo(div*10+7), sJo(div*10+8);
	}
}

int main(){
	int tc;
	sJo(7);
	sJo(8);
	qSort(arr, 0, 1021);
	scanf("%d",&tc);
	for(int i=1;i<=tc;i++){
		int num;
		bool flag = false;
		scanf("%d",&num);
		if(num==7  || num==8){
			printf("Case #%d: YES\n", i);
			continue;
		}
		for(int j=0;j<1022;j++){
			if(arr[j]>num/2){
				flag = true;
				break;
			}
			if(num%arr[j]==0){
				printf("Case #%d: YES\n", i);
				break;
			}
		}
		if(flag){
			printf("Case #%d: NO\n", i);	
		}
	}
	return 0;
}