kburnik

C++ - Zadatak Tomo

Jan 9th, 2013
82
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  
  3. Pripreme 2013 - C++ radionica
  4.  
  5. Zadatak: Tomo
  6.  
  7. Autor zadatka: HSIN
  8.  
  9. Ponudjeno rjesenje: Kristijan Burnik, udruga informaticara Bozo Tezak
  10.  
  11. Datum rjesavanja: 2013-01-09
  12.  
  13. */
  14. #include <iostream>
  15. #include <cstdlib>
  16.  
  17. typedef unsigned long long int uint64;
  18.  
  19. using namespace std;
  20.  
  21. int main() {
  22.  
  23.     long long int a,b,c;
  24.    
  25.     cin >> a >> b >> c;
  26.    
  27.     // koja je dekadska tezina broja c ? 10,100,1000 ?
  28.     int suffixWeight = (c == 0) ? 10 : 1;
  29.     int t;
  30.     t = c;    
  31.     while (t > 0) {
  32.         suffixWeight *= 10;
  33.         t/=10;
  34.     }
  35.        
  36.     // zanima nas samo nekoliko zadnjih znamenki
  37.     a %= suffixWeight;
  38.    
  39.     // uzmimo u obzir periodicnost kod mnozenja
  40.     uint64 periodStart = (a * b) % suffixWeight;
  41.    
  42.     // pretpostavljamo da nema rjesenja
  43.     int found = 0;
  44.    
  45.     // prvi broj koji ispitujemo
  46.     uint64 testNumber = a * b;
  47.    
  48.     // broj iteracija (koliko puta smo mnozili)
  49.     int iterations = 0;
  50.     do {
  51.         // broji ovo kao iteraciju
  52.         iterations++;
  53.  
  54.         // da li nam se sufiks poklapa?
  55.         if ( testNumber % suffixWeight == c ) {
  56.             // da, pronadjeno je rjesenje, iskacemo iz petlje
  57.             found = 1;
  58.             break;
  59.         }
  60.        
  61.         // trazimo iduci broj
  62.         testNumber *= b;
  63.        
  64.         // zanimaju nas samo znamenke reda velicine sufiksa
  65.         testNumber %= suffixWeight;
  66.        
  67.         // toliko dugo dok se period ne ponovi
  68.     } while ( testNumber % suffixWeight != periodStart  );
  69.    
  70.    
  71.     // ispis rezultata
  72.     if (found) {
  73.         cout << iterations << endl;
  74.     } else {
  75.         cout << "NIKAD" << endl;
  76.     }
  77.    
  78.  
  79.     system("pause");
  80.     return 0;
  81. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×