Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdbool.h>
- #include <limits.h>
- bool overCisloUctu(long long cislo, int minPocetSudych, int minPocetVyskytu) {
- int vahy[] = { 1, 2, 4, 8, 5, 10, 9, 7, 3, 6 };
- int cetnosti[] = { 0,0,0,0,0,0,0,0,0,0 };
- int maxPocetVyskytu = 0;
- int pozice = 0;
- int sum = 0;
- int pocetSudych = 0;
- while (cislo > 0) {
- int cislice = cislo % 10; // modulo, tj. zbytek po deleni
- cetnosti[cislice]++;
- if (cetnosti[cislice] > maxPocetVyskytu)
- maxPocetVyskytu = cetnosti[cislice];
- if ((cislice % 2) == 0) pocetSudych++;
- sum = sum + cislice * vahy[pozice];
- cislo = cislo / 10;
- pozice++;
- }
- // pocet uvodnich nul bude = 10-pozice
- pocetSudych = pocetSudych + 10 - pozice;
- return ((sum % 11) == 0) && pocetSudych >= minPocetSudych && maxPocetVyskytu >= maxPocetVyskytu;
- }
- int main() {
- printf("Generator cisel uctu...\n");
- double progres = 0;
- int pocitadlo = 0;
- for (long long x = 0; x <= 9999999999; x++) {
- if (pocitadlo == 10000000) {
- pocitadlo = 0;
- fprintf(stderr, "progres=%.1lf procent\n", progres);
- progres = progres + 0.1;
- }
- pocitadlo++;
- if (overCisloUctu(x, 9, 6))
- printf("%010lld\n", x);
- }
- }
RAW Paste Data