Pagini recente » Cod sursa (job #2683728) | Cod sursa (job #1159170) | Cod sursa (job #3207480) | Cod sursa (job #2843783) | Cod sursa (job #3219866)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("sarpe.in");
ofstream cout("sarpe.out");
char s[105];
int nr[105],v[105],r[105],r2[105];
void produs(int a[],int b,int c[]){
int r=0;
for(int i=1;i<=a[0];i++){
c[i]=r+a[i]*b;
r=c[i]/10;
c[i]%=10;
}
c[0]=a[0];
while(r!=0){
c[++c[0]]=r%10;
r/=10;
}
}
void produs2(int a[],int b[],int c[]){
c[0]=a[0]+b[0]-1;
for(int i=1;i<=b[0];i++)
for(int j=1;j<=a[0];j++)
c[j+i-1]+=a[j]*b[i];
int r=0;
for(int i=1;i<=c[0];i++){
c[i]+=r;
r=c[i]/10;
c[i]%=10;
}
if(r!=0)
c[++c[0]]=r;
}
void scadere(int a[]){
int poz=1;
while(a[poz]==0)
a[poz++]=9;
a[poz]--;
}
void suma(int a[],int b[]){
int n=max(a[0],b[0]),r=0;
a[0]=n;
for(int i=1;i<=n;i++){
a[i]+=b[i]+r;
r=a[i]/10;
a[i]%=10;
}
if(r!=0)
a[++a[0]]=r;
}
void afisare(int a[]){
for(int i=a[0];i>0;i--)
cout<<a[i];
}
int main()
{
cin>>s;
int n=strlen(s);
for(int i=n-1;i>=0;i--)
nr[++nr[0]]=s[i]-'0';
if(nr[0]==1&&nr[1]==1){
cout<<2;
return 0;
}
produs(nr,4,r);
scadere(nr);
produs(nr,2,v);
scadere(nr);
produs2(v,nr,r2);
suma(r,r2);
afisare(r);
return 0;
}