Advertisement
Infernale

Jo Number

Dec 1st, 2018
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.22 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int n = 500000000, i;
  4. int arr[100000];
  5.  
  6. void swap(int* a, int* b) {
  7.     int t = *a;
  8.     *a = *b;
  9.     *b = t;
  10. }
  11.  
  12. int partition (int arr[], int low, int high) {
  13.     int pivot = arr[high];
  14.     int i = (low - 1);
  15.     for (int j = low; j <= high- 1; j++) {
  16.         if (arr[j] <= pivot) {
  17.             i++;
  18.             swap(&arr[i], &arr[j]);
  19.         }
  20.     }
  21.     swap(&arr[i + 1], &arr[high]);
  22.     return (i + 1);
  23. }
  24.  
  25. void qSort(int arr[], int l, int h) {
  26.     if (l < h) {
  27.         int pi = partition(arr, l, h);
  28.         qSort(arr, l, pi - 1);
  29.         qSort(arr, pi + 1, h);
  30.     }
  31. }
  32.  
  33. void sJo(int div){
  34.     arr[i++] = div;
  35.     if(div > n){
  36.         return;
  37.     }else{
  38.         return sJo(div*10+7), sJo(div*10+8);
  39.     }
  40. }
  41.  
  42. int main(){
  43.     int tc;
  44.     sJo(7);
  45.     sJo(8);
  46.     qSort(arr, 0, 1021);
  47.     scanf("%d",&tc);
  48.     for(int i=1;i<=tc;i++){
  49.         int num;
  50.         bool flag = false;
  51.         scanf("%d",&num);
  52.         if(num==7  || num==8){
  53.             printf("Case #%d: YES\n", i);
  54.             continue;
  55.         }
  56.         for(int j=0;j<1022;j++){
  57.             if(arr[j]>num/2){
  58.                 flag = true;
  59.                 break;
  60.             }
  61.             if(num%arr[j]==0){
  62.                 printf("Case #%d: YES\n", i);
  63.                 break;
  64.             }
  65.         }
  66.         if(flag){
  67.             printf("Case #%d: NO\n", i);   
  68.         }
  69.     }
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement