Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
|
|
@ -0,0 +1,58 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#define twidth 5
|
||||
#define mdr(rmdr, rmp, n)\
|
||||
do { *rmp = 0; _mdr(rmdr, rmp, n); } while (0)
|
||||
|
||||
void _mdr(int *rmdr, int *rmp, long long n)
|
||||
{
|
||||
/* Adjust r if 0 case, so we don't return 1 */
|
||||
int r = n ? 1 : 0;
|
||||
while (n) {
|
||||
r *= (n % 10);
|
||||
n /= 10;
|
||||
}
|
||||
|
||||
(*rmp)++;
|
||||
if (r >= 10)
|
||||
_mdr(rmdr, rmp, r);
|
||||
else
|
||||
*rmdr = r;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int i, j, vmdr, vmp;
|
||||
const int values[] = { 123321, 7739, 893, 899998 };
|
||||
const int vsize = sizeof(values) / sizeof(values[0]);
|
||||
|
||||
/* Initial test values */
|
||||
printf("Number MDR MP\n");
|
||||
for (i = 0; i < vsize; ++i) {
|
||||
mdr(&vmdr, &vmp, values[i]);
|
||||
printf("%6d %3d %3d\n", values[i], vmdr, vmp);
|
||||
}
|
||||
|
||||
/* Determine table values */
|
||||
int table[10][twidth] = { 0 };
|
||||
int tfill[10] = { 0 };
|
||||
int total = 0;
|
||||
for (i = 0; total < 10 * twidth; ++i) {
|
||||
mdr(&vmdr, &vmp, i);
|
||||
if (tfill[vmdr] < twidth) {
|
||||
table[vmdr][tfill[vmdr]++] = i;
|
||||
total++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Print calculated table values */
|
||||
printf("\nMDR: [n0..n4]\n");
|
||||
for (i = 0; i < 10; ++i) {
|
||||
printf("%3d: [", i);
|
||||
for (j = 0; j < twidth; ++j)
|
||||
printf("%d%s", table[i][j], j != twidth - 1 ? ", " : "");
|
||||
printf("]\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue