Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
62
Task/Floyds-triangle/C/floyds-triangle.c
Normal file
62
Task/Floyds-triangle/C/floyds-triangle.c
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
#include <stdio.h>
|
||||
|
||||
void t(int n)
|
||||
{
|
||||
int i, j, c, len;
|
||||
|
||||
i = n * (n - 1) / 2;
|
||||
for (len = c = 1; c < i; c *= 10, len++);
|
||||
c -= i; // c is the col where width changes
|
||||
|
||||
#define SPEED_MATTERS 0
|
||||
#if SPEED_MATTERS // in case we really, really wanted to print huge triangles often
|
||||
char tmp[32], s[4096], *p;
|
||||
|
||||
sprintf(tmp, "%*d", len, 0);
|
||||
|
||||
inline void inc_numstr(void) {
|
||||
int k = len;
|
||||
|
||||
redo: if (!k--) return;
|
||||
|
||||
if (tmp[k] == '9') {
|
||||
tmp[k] = '0';
|
||||
goto redo;
|
||||
}
|
||||
|
||||
if (++tmp[k] == '!')
|
||||
tmp[k] = '1';
|
||||
}
|
||||
|
||||
for (p = s, i = 1; i <= n; i++) {
|
||||
for (j = 1; j <= i; j++) {
|
||||
inc_numstr();
|
||||
__builtin_memcpy(p, tmp + 1 - (j >= c), len - (j < c));
|
||||
p += len - (j < c);
|
||||
|
||||
*(p++) = (i - j)? ' ' : '\n';
|
||||
|
||||
if (p - s + len >= 4096) {
|
||||
fwrite(s, 1, p - s, stdout);
|
||||
p = s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fwrite(s, 1, p - s, stdout);
|
||||
#else // NO_IT_DOESN'T
|
||||
int num;
|
||||
for (num = i = 1; i <= n; i++)
|
||||
for (j = 1; j <= i; j++)
|
||||
printf("%*d%c", len - (j < c), num++, i - j ? ' ':'\n');
|
||||
#endif
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
t(5), t(14);
|
||||
|
||||
// maybe not
|
||||
// t(10000);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue