/home/toolbox/public_html/solutions/7/725/b.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 /*
16 * Author: Isaac Traxler
17 * Date: 2015-04-03
18 * Purpose:
19 * Problem: 725
20 */
21
22 /*
23 * This template reads data until a terminating value is reached.
24 */
25
26 #define UPPER_LIMIT 80
27 int ansCnt[UPPER_LIMIT];
28 long long int ans[UPPER_LIMIT][250];
29 /* first column will be count of answers, each successive column will be an answer */
30 int num;
31 int den;
32 int goal;
33
34 void init()
35 {
36 /* FUNCTION init */
37 int i;
38 int i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;
39 int res;
40
41 for (i=2; UPPER_LIMIT>i; i++)
42 {
43 /* for */
44 ansCnt[i] = 0;
45 } /* for */
46 /* process through ever possible numerator,
47 then test each possible denominator for that numerator */
48 for (i0=1; 10>i0; i0++)
49 {
50 /* for i0 */
51 for (i1=0; 10>i1; i1++)
52 {
53 /* for i1 */
54 if (i0 != i1)
55 {
56 /* valid case */
57 for (i2=0; 10>i2; i2++)
58 {
59 /* for i2 */
60 if ((i0 != i2) && (i1 != i2))
61 {
62 /* valid case */
63 for (i3=0; 10>i3; i3++)
64 {
65 /* for i3 */
66 if ((i0 != i3) && (i1 != i3) && (i2 != i3))
67 {
68 /* valid case */
69 for (i4=0; 10>i4; i4++)
70 {
71 /* for i4 */
72 if ((i0 != i4) && (i1 != i4) && (i2 != i4) && (i3 != i4))
73 {
74 /* valid case */
75 for (i5=1; 9>i5; i5++) /* first digit of denominator */
76 {
77 /* for i5 */
78 if ((i0 != i5) && (i1 != i5) && (i2 != i5) && (i3 != i5) && (i4 != i5))
79 {
80 /* valid case */
81 for (i6=0; 10>i6; i6++)
82 {
83 /* for i6 */
84 if ((i0 != i6) && (i1 != i6) && (i2 != i6) && (i3 != i6) && (i4 != i6) && (i5 != i6))
85 {
86 /* valid case */
87 for (i8=0; 10>i8; i8++)
88 {
89 /* for i8 */
90 if ((i0 != i8) && (i1 != i8) && (i2 != i8) && (i3 != i8) && (i4 != i8) && (i5 != i8) && (i6 != i8) && (i7 != i8))
91 {
92 /* valid case */
93 for (i8=0; 10>i8; i8++)
94 {
95 /* for i8 */
96 if ((i0 != i8) && (i1 != i8) && (i2 != i8) && (i3 != i8) && (i4 != i8) && (i5 != i8) && (i6 != i8) && (i7 != i8))
97 {
98 /* valid case */
99 for (i9=0; 10>i9; i9++)
100 {
101 /* for i9 */
102 if ((i0 != i9) && (i1 != i9) && (i2 != i9) && (i3 != i9) && (i4 != i9) && (i5 != i9) && (i6 != i9) && (i7 != i9) && (i8 != i9))
103 {
104 /* valid case */
105 num = i0 + 10 * i1 + 100 * i2 + 1000 * i3 + 10000 * i4;
106 den = i5 + 10 * i6 + 100 * i7 + 1000 * i8 + 10000 * i9;
107 if (num > den)
108 {
109 /* do actual division */
110 if (0 == num % den)
111 {
112 /* zero remainder */
113 res = num / den;
114 ans[res][ansCnt[res]] = ((long long int) num) * 100000 / den;
115 ansCnt[res] = ansCnt[res] + 1;
116 } /* zero remainder */
117 } /* do actual division */
118 } /* valid case */
119 } /* for i9 */
120 } /* valid case */
121 } /* for i8 */
122 } /* valid case */
123 } /* for i7 */
124 } /* valid case */
125 } /* for i6 */
126 } /* valid case */
127 } /* for i5 */
128 } /* valid case */
129 } /* for i4 */
130 } /* valid case */
131 } /* for i3 */
132 } /* valid case */
133 } /* for i2 */
134 } /* valid case */
135 } /* for i1 */
136 } /* for i0 */
137
138 } /* FUNCTION init */
139
140 void dump()
141 {
142 /* FUNCTION dump */
143 } /* FUNCTION dump */
144
145 int getInput()
146 {
147 /* FUNCTION getInput */
148 int dataReadFlag;
149
150 scanf(" %d ", &goal);
151
152 dataReadFlag = 0 != goal;
153 return (dataReadFlag);
154 } /* FUNCTION getInput */
155
156 void process()
157 {
158 /* FUNCTION process */
159 int i;
160 for (i=2; UPPER_LIMIT>i; i++)
161 {
162 /* for */
163 printf("ansCnt[%d] = %d\n", i, ansCnt[i]);
164 } /* for */
165 } /* FUNCTION process */
166
167 int main()
168 {
169 /* main */
170 int moreToDo;
171
172 init();
173 moreToDo = getInput();
174 while (moreToDo)
175 {
176 /* while */
177 process();
178 moreToDo = getInput();
179 } /* while */
180
181 return EXIT_SUCCESS;
182 } /* main */
183