Pagini recente » Cod sursa (job #105387) | Cod sursa (job #2511257) | Cod sursa (job #2152796) | Cod sursa (job #873474) | Cod sursa (job #1076317)
#include<fstream>
#include<cstring>
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
#define ll unsigned long long
using namespace std;
ifstream in("tort.in");
ofstream out("tort.out");
const int Lmax = 50;
void eq(int X[],int Y[]){
for(int i=0;i<=Y[0];i++) X[i]=Y[i];
}
void sum(int X[],int Y[]){
int t=0;
X[0]=max(X[0],Y[0]);
for(int i=1;i<=X[0];i++){
int aux=(X[i]+Y[i]+t);
X[i]=aux%10;
t=aux/10;
}
if(t) X[++X[0]]=t;
}
void prod(int X[],int p){
int t=0;
for(int i=1;i<=X[0];i++){
int aux=X[i]*p+t;
X[i]=aux%10;
t=aux/10;
}
if(t) X[++X[0]]=t;
}
void movi(int X[],int m){
int T[Lmax];
memset(T,0,sizeof(T));
T[0]=m;
for(int i=1;i<=X[0];i++) T[++T[0]]=X[i];
for(int i=0;i<=T[0];i++) X[i]=T[i];
}
void Prod(int X[],int Y[]){
int T[Lmax][Lmax];
memset(T,0,sizeof(T));
for(int i=1;i<=X[0];i++){
eq(T[i],Y);
prod(T[i],X[i]);
movi(T[i],i-1);
sum(T[0],T[i]);
}
for(int i=0;i<=T[0][0];i++) X[i]=T[0][i];
}
int A[Lmax],B[Lmax],C[Lmax];
int AS[Lmax],BS[Lmax],CS[Lmax];
int S[Lmax],SS[Lmax];
int main(){
ll a,b;
in>>a>>b;
//out<< ( (a+1)*(a+2)/2 * (b+1) + b*(b+1)/2 * (a+1) )<<'\n';
ll x,xx,xxx;
ll y,yy,yyy;
x=a+1;
xx=a+2;
xxx=b+1;
y=b;
yy=b+1;
yyy=a+1;
if(x%2==0) x/=2;
if(xx%2==0) xx/=2;
if(y%2==0) y/=2;
if(yy%2==0) yy/=2;
while(x) A[++A[0]]=x%10,x/=10;
while(xx) B[++B[0]]=xx%10,xx/=10;
while(xxx) C[++C[0]]=xxx%10,xxx/=10;
while(y) AS[++AS[0]]=y%10,y/=10;
while(yy) BS[++BS[0]]=yy%10,yy/=10;
while(yyy) CS[++CS[0]]=yyy%10,yyy/=10;
eq(S,A);
Prod(S,B);
Prod(S,C);
eq(SS,AS);
Prod(SS,BS);
Prod(SS,CS);
sum(S,SS);
for(int i=S[0];i>=1;i--) out<<S[i];
return 0;
}