Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Pripreme 2013 - C++ radionica
- Zadatak: Tomo
- Autor zadatka: HSIN
- Ponudjeno rjesenje: Kristijan Burnik, udruga informaticara Bozo Tezak
- Datum rjesavanja: 2013-01-09
- */
- #include <iostream>
- #include <cstdlib>
- typedef unsigned long long int uint64;
- using namespace std;
- int main() {
- long long int a,b,c;
- cin >> a >> b >> c;
- // koja je dekadska tezina broja c ? 10,100,1000 ?
- int suffixWeight = (c == 0) ? 10 : 1;
- int t;
- t = c;
- while (t > 0) {
- suffixWeight *= 10;
- t/=10;
- }
- // zanima nas samo nekoliko zadnjih znamenki
- a %= suffixWeight;
- // uzmimo u obzir periodicnost kod mnozenja
- uint64 periodStart = (a * b) % suffixWeight;
- // pretpostavljamo da nema rjesenja
- int found = 0;
- // prvi broj koji ispitujemo
- uint64 testNumber = a * b;
- // broj iteracija (koliko puta smo mnozili)
- int iterations = 0;
- do {
- // broji ovo kao iteraciju
- iterations++;
- // da li nam se sufiks poklapa?
- if ( testNumber % suffixWeight == c ) {
- // da, pronadjeno je rjesenje, iskacemo iz petlje
- found = 1;
- break;
- }
- // trazimo iduci broj
- testNumber *= b;
- // zanimaju nas samo znamenke reda velicine sufiksa
- testNumber %= suffixWeight;
- // toliko dugo dok se period ne ponovi
- } while ( testNumber % suffixWeight != periodStart );
- // ispis rezultata
- if (found) {
- cout << iterations << endl;
- } else {
- cout << "NIKAD" << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement