Pagini recente » Cod sursa (job #1350780) | Cod sursa (job #164747) | Cod sursa (job #2010875) | Cod sursa (job #2896983) | Cod sursa (job #71789)
Cod sursa(job #71789)
#include<fstream.h>
long a[1000],b[1000],c[100000],d[10000],nr=0;
void inmultire(long a[],long b[],long c[],long nr1,long nr){
for (long i=0;i<nr1;i++){
int t=0;
for (long j=0;j<nr;j++){
c[j+i]+=b[j]*a[i]+t;
t=c[j+i]/10;
c[j+i]=c[j+i]%10;}
if (t>0)
c[nr+i]=t; }
}
int main(){
ifstream fin("sarpe.in");
ofstream fout("sarpe.out");
char x;
while(!fin.eof()){
fin>>x;
a[nr++]=x-'0';}
nr--;
for (int i=0;i<nr/2;i++){
int aux=a[i];
a[i]=a[nr-i-1];
a[nr-i-1]=aux;}
for (int j=0;j<nr;j++)
b[j]=a[j];
long y[2];
y[0]=4;
inmultire(y,a,d,1,nr);
if (a[0]>=1)
a[0]-=1;
else {
a[1]--;
a[0]=9;}
if (a[1]<0){
int w=1;
a[1]=9;
while (a[w]==9){
a[w+1]--;
w++;} }
if (b[0]>=2)
b[0]-=2;
else {
b[1]--;
b[0]=10-2+b[0];}
if (b[1]<0){
int w=1;
b[1]=9;
while (b[w]==9){
b[w+1]--;
w++;} }
inmultire(a,b,c,nr,nr);
int t=0;
for (long r=0;r<=nr*2;r++){
c[r]=c[r]*2+t;
t=c[r]/10;
c[r]=c[r]%10;}
if (t>0) {
c[(nr-1)*2+1]=t;
nr=(nr-1)*2+1;}
else
nr=(nr-1)*2;
t=0;
for (long e=0;e<=2*nr;e++){
c[e]=c[e]+d[e]+t;
t=c[e]/10;
c[e]=c[e]%10;}
if (t>0)
c[nr++]=1;
long g=nr*2+1;
while (c[g]==0)
g--;
for (long p=g;p>=0;p--)
fout<<c[p];
fout<<"\n";
fin.close();
fout.close();
return 0;
}