小信的方程式 WA60

8. 小信的方程式

题目ID:20686必做题100分

时间限制: 1000ms

空间限制: 262144kB

题目描述

小信最近刚学完如何解方程,他找了一些题目跃跃欲试。

有四个正整数x,y,z,kx,y,z,k,小信想要计算当0≤x≤a,0≤y≤b,0≤z≤c,0≤k≤d0≤x≤a,0≤y≤b,0≤z≤c,0≤k≤d时,有多少情况满足:x+y+z=kx+y+z=k。

输入格式

第一行输入四个整数a,b,c,d(0≤a,b,c,d≤106)a,b,c,d(0≤a,b,c,d≤106)。

输出格式

输出一个整数表示所有的情况数。

样例

Input 1

3 3 3 3

Output 1

20

Input 2

300 300 300 300

Output 2

4590551

Input 3

12345 12345 12345 12345

Output 3

313713415596

为什么手动 除以2 也能 AC 6个点

阳间代码:

#include <bits/stdc++.h>

using namespace std;
long long ans[10000005],sum;
int main()
{
	long long a,b,c,d;
	cin>>a>>b>>c>>d;
	for(long long i = 0;i <= a;i++)
	{
		ans[i]++;
		ans[i+b+1]--;
	}
	for(long long i = 1;i <= a+b;i++)
	{
		ans[i] += ans[i-1];
	}
	
	for(long long i = 0;i <= a+b;i++)
	{
		ans[i]+=ans[i];
		ans[i+c+1]-=ans[i];
	}
	for(long long i = 1;i <= a+b+c;i++)
	{
		ans[i] += ans[i-1];
	}
	for(long long i = 0;i <= d;i++)
	{
		sum+=ans[i];
	}
	cout<<sum/2;
    return 0;
}

然后死了……