Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Multiplikativna otpornost broja

[es] :: C/C++ programiranje :: Multiplikativna otpornost broja

[ Pregleda: 5812 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

yoMas
Antonnela
student
BiH

Član broj: 276055
Poruke: 12
92.36.251.*



Profil

icon Multiplikativna otpornost broja29.12.2010. u 17:20 - pre 161 meseci
eiii ljudi ;)

Nadam se da mi neko od programera moze pomoci...

Imam zadatak :

Neka je n1 proizvod cifara broja n, n2 proizvod cifara broja n1, n3 proizvod cifara broja n2 itd... najmanji broj k za koji vrijedi da je nk jednocifren broj naziva se multiplikativna otpornost broja n.
Npr. multiplikativna otpornost broja 6788 iznosi 6 , jer je
n1=6*7*8*=2688,
n2=2*6*8*8=768,
n3=7*6*8=336,
n4=3*3*6=54,
n5=5*4=20,
n6=2*0=0;

Napisati program za prirodan broj n unijet sa tastature racunara i ispisuje njegovu multiplikativnu otpornost ...
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.teletrader.com.



+2789 Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 12:08 - pre 161 meseci
Code:
#include <iostream>
#include <string>
#include <vector>

using namespace std;

void process(vector<char> &n) {
    while (n.size() > 1) {
        for (size_t i = 0; i < n.size(); ++i) {
            if (n[i] == 0) {
                n.clear();

                return;
            }
        }

        vector<char> n1;

        n1.push_back(1);

        for (size_t i = 0; i < n.size(); ++i) {
            int digit = n[i];

            for (size_t j = 0; j < n1.size(); ++j) {
                n1[j] *= digit;
            }

            char carry = 0;

            for (size_t j = 0; j < n1.size(); ++j) {
                char value = n1[j] + carry;

                carry = value / 10;
                n1[j] = value - 10*carry;
            }

            if (carry > 0) {
                n1.push_back(carry);
            }
        }

        n = n1;
    }
}

int main() {
    string input;
    cin >> input;
    vector<char> n;

    for (int i = input.size() - 1; i != -1; --i) {
        n.push_back(input[(size_t) i] - '0');
    }

    process(n);

    if (n.empty()) {
        cout << "0";
    } else {
        for (int i = n.size() - 1; i != -1; --i) {
            cout << ((int) n[(size_t) i]);
        }
    }

    cout << endl;

    return 0;
}

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 14:40 - pre 161 meseci
Moze to i malo jednostavnije:

Code:

#include <cstdlib>
#include <cmath>
#include <string>
#include <iostream>

int product(int value) {
    int result = 1;
    for(int operv=std::abs(value); operv > 0; ) {
        result *= (operv % 10);
        operv = static_cast<int>(std::floor(operv / 10.0f));
    }
    return result;
}

int process(int value) {
    int result = 0;
    for (result=1, value=product(value); value > 0; ++result) {
        value=product(value);
    }
    return result;
}


int main(void) {
    
    int input = 0;
    std::cin >> input;

    std::cout << process(input) << std::endl;
    
    return EXIT_SUCCESS;
}

Tko leti vrijedi
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.teletrader.com.



+2789 Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 15:05 - pre 161 meseci
A šta ako ti korisnik unese broj sa 1000 cifara? Moj program radi i u tom slučaju.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 16:59 - pre 161 meseci
Tvoj program svakako podrzava mnogo vece brojeve od mog ali ipak ima ogranicenje u smislu da proizvodi cifara unetog broja ne moze da bude veci od INT_MAX - sto naravno pogadja i moju verziju.

Resenje za bilo koji broj bi moglo da se izvede uz koriscenje neke od biblioteka za velike brojeve kao bigint - https://mattmccutchen.net/bigint/


Tko leti vrijedi
 
Odgovor na temu

yoMas
Antonnela
student
BiH

Član broj: 276055
Poruke: 12
*.ze2.dlp43.bih.net.ba.



Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 17:19 - pre 161 meseci
Hvala Vam punoooo na pomoci oko zadatka...
Takoder zelim Vam sve najbolje u narednoj 2011.-toj godini.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 19:20 - pre 161 meseci
Citat:
kiklop74: Tvoj program svakako podrzava mnogo vece brojeve od mog ali ipak ima ogranicenje u smislu da proizvodi cifara unetog broja ne moze da bude veci od INT_MAX - sto naravno pogadja i moju verziju.

Resenje za bilo koji broj bi moglo da se izvede uz koriscenje neke od biblioteka za velike brojeve kao bigint - https://mattmccutchen.net/bigint/


Odakle ti to uopšte? Moj program nema nikakva ograničenja osim raspoložive memorije. Proizvod cifara se ne računa kao int, nego kao string cifara. Dakle, rezultat množenja cifara je opet string.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Multiplikativna otpornost broja30.12.2010. u 19:38 - pre 161 meseci
Povlacim receno. U pravu si.
Tko leti vrijedi
 
Odgovor na temu

sonus70
Novi Sad

Član broj: 120808
Poruke: 176
..106.109.adsl.dyn.beotel.net.



+266 Profil

icon Re: Multiplikativna otpornost broja31.12.2010. u 08:05 - pre 161 meseci
Aj jedno laičko pitanje.
Čemu uopšte služi ta multiplikativna otpornost?
Ima neku upotrebnu vrednost ili čisto služi profanima za ispitna pitanja?
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.teletrader.com.



+2789 Profil

icon Re: Multiplikativna otpornost broja31.12.2010. u 08:49 - pre 161 meseci
Biće da je to drugo.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: Multiplikativna otpornost broja04.01.2011. u 14:03 - pre 161 meseci
Zanimljivo je da nijedan od dva priložena programa nije tačan.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Multiplikativna otpornost broja04.01.2011. u 16:20 - pre 161 meseci
Mda, u pravu si.

U slucaju primera koji sam poslao treba modifikovati uslov u petlji u funkciji process

Code:


int process(int value) {
    int result = 0;
    for (result=1, value=product(value); value > 9; ++result) {
        value=product(value);
    }
    return result;
}


Tko leti vrijedi
 
Odgovor na temu

saxhax
nezaposlen
BiH

Član broj: 238797
Poruke: 5
178.77.19.*



Profil

icon Re: Multiplikativna otpornost broja23.11.2011. u 19:34 - pre 150 meseci
mislim da je ovo zadatak namijenjen za pocetnike pa da nebismo komlikovali evo jednostavno rjesenje...

#include <iostream>
using namespace std;
int main()
{
long long n,m,v(0),d(1);
cin>>n;
m=n;
while (1)
{while (m!=0)
{ d=d*(m%10); m=m/10;} v++; if (d<10) break; else {m=d; d=1;}}
cout<<v;
system("pause");
return 0;
}
 
Odgovor na temu

mustafa12
mustafa dedovic
ilijas

Član broj: 333410
Poruke: 1
*.dynamic.vinet.ba.

Sajt: facebook


Profil

icon Re: Multiplikativna otpornost broja04.05.2016. u 22:27 - pre 96 meseci
zadnje rjesenje je najbolje i najbrze


[Ovu poruku je menjao mustafa12 dana 05.05.2016. u 00:11 GMT+1]
Musto
 
Odgovor na temu

[es] :: C/C++ programiranje :: Multiplikativna otpornost broja

[ Pregleda: 5812 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.