tdulik

Untitled

Aug 27th, 2020
1,160
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <limits.h>
  4. bool overCisloUctu(long long cislo, int minPocetSudych, int minPocetVyskytu) {
  5.     int vahy[] = { 1, 2, 4, 8, 5, 10, 9, 7, 3, 6 };
  6.     int cetnosti[] = { 0,0,0,0,0,0,0,0,0,0 };
  7.     int maxPocetVyskytu = 0;
  8.     int pozice = 0;
  9.     int sum = 0;
  10.     int pocetSudych = 0;
  11.     while (cislo > 0) {
  12.         int cislice = cislo % 10; // modulo, tj. zbytek po deleni
  13.         cetnosti[cislice]++;
  14.         if (cetnosti[cislice] > maxPocetVyskytu)
  15.             maxPocetVyskytu = cetnosti[cislice];
  16.         if ((cislice % 2) == 0) pocetSudych++;
  17.         sum = sum + cislice * vahy[pozice];
  18.         cislo = cislo / 10;
  19.         pozice++;
  20.     }
  21.     // pocet uvodnich nul bude = 10-pozice
  22.     pocetSudych = pocetSudych + 10 - pozice;
  23.     return ((sum % 11) == 0) && pocetSudych >= minPocetSudych && maxPocetVyskytu >= maxPocetVyskytu;
  24.  
  25. }
  26.  
  27. int main() {
  28.     printf("Generator cisel uctu...\n");
  29.     double progres = 0;
  30.     int pocitadlo = 0;
  31.     for (long long x = 0; x <= 9999999999; x++) {
  32.         if (pocitadlo == 10000000) {
  33.             pocitadlo = 0;
  34.             fprintf(stderr, "progres=%.1lf procent\n", progres);
  35.             progres = progres + 0.1;
  36.         }
  37.         pocitadlo++;
  38.         if (overCisloUctu(x, 9, 6))
  39.             printf("%010lld\n", x);
  40.     }
  41.  
  42. }
RAW Paste Data