Pagini recente » Cod sursa (job #2322548) | Cod sursa (job #1216451) | Cod sursa (job #2731787) | Cod sursa (job #2138613) | Cod sursa (job #72972)
Cod sursa(job #72972)
#include <fstream>
using namespace std;
int a[2];
int n[2005];
int n1[2005];
int n2[2005];
int r[2005];
int r1[2005];
int r2[2005];
int r3[2005];
void citire(){
ifstream fin("sarpe.in");
n[0] = 0;
char x;
fin.get(x);
while (!fin.eof()){
n[++n[0]] = x - '0';
fin.get(x);
}
fin.close();
}
void invers(int a[]) {
for (int i = 1; i <= (a[0] >> 1); i ++) {
int aux = a[i];
a[i] = a[a[0] - i + 1];
a[a[0] - i + 1] = aux;
}
}
void inmultire(int a[], int b[], int c[]){
int t = 0, p = 0;
int n = a[0];
for(int i = 1; i<= b[0]; i++) {
for(int j = 1; j <= a[0]; j++)
c[j + p] += a[j] * b[i];
p++;
}
n += p - 1;
t = 0;
for(int j = 1; j <= n; j++){
c[j + 1] += c[j] / 10;
c[j ]%= 10;
}
if(t > 0)
c[n++] = t;
c[0] = n;
}
void adun(int a[], int b[], int c[]) {
int t =0;
int n = (a[0] > b[0]) ? a[0] : b[0];
for (int i = 1; i <= n; i ++) {
int cif = a[i] + b[i] + t;
c[i] = cif % 10;
t = cif / 10;
}
if (t > 0)
c[n ++] = t;
c[0] = n;
}
void scad_1(int a[]){
a[1] --;
int i = 1;
while (i <= a[0] && a[i] < 0) {
a[i + 1]--;
a[i++] += 10;
};
i = a[0];
while (i > 1 && !a[i] )i--;
a[0]= i;
}
void afisare(int a[]){
ofstream fout("sarpe.out");
for(int i = a[0] ; i > 0 ; i--)
fout << a[i];
fout.close();
}
int main() {
citire();
invers(n);
a[0] = 1;
a[1] = 4;
inmultire(a, n, r1);
memcpy(n1, n, sizeof(n));
scad_1(n1);
memcpy(n2, n1, sizeof(n1));
scad_1(n2);
inmultire(n1, n2, r2);
a[0] = 1;
a[1] = 2;
inmultire(a,r2, r3);
adun(r1, r3, r);
afisare(r);
return 0;
}