Jump to content

Recommended Posts

Posted

"Se dă un număr N. Să se afişeze 2N. (0 < N < 100)."

 

La prima vedere pare simplă (chiar dacă aşa şi este). Totul se reduce la folosirea algoritmului de înmulţire pe numere mari dintre un număr mic (ce se poate salva într-o singura variabilă) şi un număr mare (unde este necesară salvarea sa într-un vector, fiecare componentă a vectorului reprezentând o cifră a numărului).

 

Programul va arăta în felul următor:

/*
    Author: Kid Koder
    Date: 21-Sep-14 13:36
    Description : 2^P
    Language: C++
*/

#include <iostream>

using namespace std;

#define DIM 10000

int N, v[DIM], i, cat;

int main() {
    cout << "N = ";
    cin >> N;         // Citim N

    v[0] = v[1] = 1; // 2^0 = 1

    while(N != 0) {  // Cat timp mai avem de inmultit
        i = 1;
        cat = 0;   // Initializam "cat" si "i"

        while(i <= v[0] || cat != 0) {  //
            v[i] = v[i] * 2 + cat;      //
            cat = v[i] / 10;            //
            v[i] %= 10;                 // ----> ALGORITMUL PRINCIPAL
            v[0] = max(v[0], i);        //
            i++;                        //
        }                               //

        N--;
    }

    cout << "Rezultat = ";

    for(i = v[0];i >= 1;i--) {         // Afisare
        cout << v[i];
    }

    cout << 'n';   // New Line

    return 0; // The End
}

Desigur, algoritmul este acelaşi şi în cazul problemei de afişare a numărului ab  (cu a şi b date), tot ce trebuie făcut este de a schimba în zona algoritmului numărul "2" cu litera "a", iar variabila N cu litera b.

 

Mult succes !

  • Upvote 2

Daca iti iese un program din prima, inseamna ca ceva e gresit...

  • 7 months later...

Posted

Nu neaparat asa. Uite o metoda mult mai simpla.

#include <cstdio>
#include <stdlib.h>
#include <cmath>

int main()
{
    system("color 02");
int n,a,b,c;
scanf ("%d",&a);
b = pow(n,a);
n=2;
c=b%10;
printf ("Rezultatul este %d n",c);
return 0;
}
  • Moderators
Posted

Nu neaparat asa. Uite o metoda mult mai simpla.

#include <cstdio>
#include <stdlib.h>
#include <cmath>

int main()
{
    system("color 02");
int n,a,b,c;
scanf ("%d",&a);
b = pow(n,a);
n=2;
c=b%10;
printf ("Rezultatul este %d n",c);
return 0;
}

"Se dă un număr N. Să se afişeze 2N. (0 < N < 100)."

 

Te rog frumos să-mi zici dacă programul tău poate calcula valoarea 299.

 

Şi vezi că ai nişte bube pe acolo.

Posted

#include <cstdio>
#include <stdlib.h>
#include <cmath>

int main()
{
    system("color 02");
int n,a,b,c;
scanf ("%d",&a);
b = pow(n,a);
n=2;
printf ("Rezultatul este %d n",b);
return 0;
}

Poate doar pana la 2 la puterea 30.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.