Description
有这样一个金字塔形的二维数表,满足A[i+1][j]=A[i][j]+1且A[i+1][j+1]=A[i][j]+2,0<=j<=i<=10^18。已知A[0][0]=0,若询问你任意的A[i][j]的值,请输出正确的值。
Input
多组输入,每组输入包含两个数x和y,0<=x,y<=10^18;
Output
对于每组合法输入,输出A[x][y]的值,否则输出-1。
SampleInput
0 0
1 2
2 1
SampleOutput
0
-1
3
Thinking
需要强调的是,千万不要被题目的“二维数表”误导,然后用迭代算出来这个表。其实你只要自己动手枚举找一下规律就会发现,答案就是i,j之和!
然后再注意一下是long long的范围就OK了。
AC代码
#include<iostream>
using namespace std;
int main()
{
longlong i,j;
while(scanf("%lld%lld",&i,&j)!=EOF)
{
if(i<j)
{
cout<<-1<<endl;
continue;
}
cout<<i+j<<endl;
}
return0;
}