Computer Programming Contest Preparation

ToolBox - Source for: 107/10789/a.c



/home/toolbox/public_html/solutions/107/10789/a.c
    1 #include <stdio.h>
    2 #include <string.h>
    3 #include <sys/types.h>
    4 #include <sys/stat.h>
    5 #include <fcntl.h>
    6 #include <stdint.h>
    7 #include <math.h>
    8 #include <stdlib.h>
    9 
   10 #define TRUE  (1 == 1)
   11 #define FALSE (1 != 1)
   12 
   13 #define DEBUG if (FALSE)
   14 
   15 #define MAX_LINE 2010
   16 
   17 /*
   18  *  Author: Isaac Traxler
   19  *    Date: 2018-02-07
   20  * Purpose: fun
   21  * Problem: 10789
   22  */
   23 
   24 /*
   25  * This template reads lines of data at a time until end of file.
   26  */
   27 
   28 char line[MAX_LINE];
   29 int numberOfTimes;
   30 int ascii[MAX_LINE];
   31 int lookupTable[MAX_LINE];
   32 int primes [303] =
   33 {
   34     2,    3,    5,    7,   11,   13,   17,   19,   23,   29,   31,   37,   41,   43,
   35     47,   53,   59,   61,   67,   71,   73,   79,   83,   89,   97,  101,  103,  107,
   36     109,  113,  127,  131,  137,  139,  149,  151,  157,  163,  167,  173,  179,  181,
   37     191,  193,  197,  199,  211,  223,  227,  229,  233,  239,  241,  251,  257,  263,
   38     269,  271,  277,  281,  283,  293,  307,  311,  313,  317,  331,  337,  347,  349,
   39     353,  359,  367,  373,  379,  383,  389,  397,  401,  409,  419,  421,  431,  433,
   40     439,  443,  449,  457,  461,  463,  467,  479,  487,  491,  499,  503,  509,  521,
   41     523,  541,  547,  557,  563,  569,  571,  577,  587,  593,  599,  601,  607,  613,
   42     617,  619,  631,  641,  643,  647,  653,  659,  661,  673,  677,  683,  691,  701,
   43     709,  719,  727,  733,  739,  743,  751,  757,  761,  769,  773,  787,  797,  809,
   44     811,  821,  823,  827,  829,  839,  853,  857,  859,  863,  877,  881,  883,  887,
   45     907,  911,  919,  929,  937,  941,  947,  953,  967,  971,  977,  983,  991,  997,
   46     1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091,
   47     1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193,
   48     1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291,
   49     1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423,
   50     1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493,
   51     1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601,
   52     1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699,
   53     1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811,
   54     1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931,
   55     1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999
   56 };
   57 
   58 void init()
   59 {
   60     /* FUNCTION init */
   61     int i;
   62 
   63     /* get the count */
   64     scanf(" %d ", &numberOfTimes);
   65 
   66     /* empty out table */
   67     for (i=0; MAX_LINE>i; i++)
   68         {
   69             lookupTable[i] = FALSE;
   70         }
   71 
   72     /* mark all the primes */
   73     for (i=0; 303>i; i++)
   74         {
   75             lookupTable[primes[i]] = TRUE;
   76         }
   77 } /* FUNCTION init */
   78 
   79 void dump()
   80 {
   81     /* FUNCTION dump */
   82 } /* FUNCTION dump */
   83 
   84 int getInput()
   85 {
   86     /* FUNCTION getInput */
   87     int dataReadFlag;
   88 
   89     fgets(line, MAX_LINE, stdin);
   90     if (feof(stdin))
   91         dataReadFlag = FALSE;
   92     else
   93         {
   94             /* something to read */
   95             dataReadFlag = TRUE;
   96             line[strlen(line)-1] = 0;
   97         } /* something to read */
   98     return (dataReadFlag);
   99 } /* FUNCTION getInput */
  100 
  101 void process()
  102 {
  103     /* FUNCTION process */
  104     int i;
  105     int stringLength;
  106     int noneFound = TRUE;
  107 
  108     /* clear out character count */
  109     for (i=0; i<MAX_LINE; i++)
  110         {
  111             ascii[i] = 0;
  112         }
  113 
  114     /* count characters */
  115     stringLength = strlen(line);
  116     for (i=0; i<stringLength; i++)
  117         {
  118             /* for */
  119             ascii[line[i]] = ascii[line[i]] + 1;
  120         } /* for */
  121 
  122     /* print out the results: */
  123     for (i=0; 256>i; i++)
  124         {
  125             /* check each character */
  126             if (lookupTable[ascii[i]])
  127                 {
  128                     /* found a prime */
  129                     noneFound = FALSE;
  130                     printf("%c", i);
  131                     DEBUG printf(" %d (%d)\n", i, ascii[i]);
  132                 } /* found a prime */
  133         } /* check each character */
  134     if (noneFound)
  135         {
  136             printf("empty");
  137         }
  138     printf("\n");
  139 } /* FUNCTION process */
  140 
  141 int main()
  142 {
  143     /* main */
  144     int i;
  145 
  146     init();
  147     for (i=0; i<numberOfTimes; i++)
  148         {
  149             /* while */
  150             getInput();
  151             printf("Case %d: ", i+1);
  152             process();
  153         } /* while */
  154 
  155     return EXIT_SUCCESS;
  156 } /* main */
  157