"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 !