Submission #488519

#TimeUsernameProblemLanguageResultExecution timeMemory
488519rainboyPopcount (COCI19_popcount)C11
0 / 110
4 ms204 KiB
#include <stdio.h> #include <string.h> #define L 256 void mult2(int *aa) { int h; for (h = 0; h < L; h++) if ((aa[h] *= 2) >= 10) aa[h] -= 10, aa[h + 1]++; } void add1(int *aa) { int h; aa[0] += 1; for (h = 0; h < L; h++) if (aa[h] >= 10) aa[h] -= 10, aa[h + 1]++; } int main() { static int aa[L]; static char cc[L + 1]; int n, m, l, i, cnt; scanf("%d%*d", &n); cnt = 0; for (m = 1; m < n; m <<= 1) cnt++; printf("%d\n", cnt); for (m = 1; m < n; m <<= 1) { memset(aa, 0, L * sizeof *aa); for (i = n - 1; i >= 0; i--) { mult2(aa); if (i % (m * 2) < m) add1(aa); } l = L; while (l > 1 && aa[l - 1] == 0) l--; for (i = l - 1; i >= 0; i--) cc[l - 1 - i] = aa[i] + '0'; cc[l] = 0; printf("A=((A&%s)+((A>>%d)&%s))\n", cc, m, cc); } return 0; }

Compilation message (stderr)

popcount.c: In function 'main':
popcount.c:28:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |  scanf("%d%*d", &n);
      |  ^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...