自己纸上画画应该就会了,这种题多做点就好了吧,推式子就会快很多,当时省赛没写出来.读了假题+时间太短+太饿了吧?
另外感谢清楚姐姐帮忙重现~

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll qp(ll a,ll b)
{
    ll res=1;
    while(b)
    {
        if(b&1) res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }return res;
}

ll iv;

ll Cnt(ll a,ll b)
{
    return (1+a)*a%mod*iv%mod*(1+b)%mod*b%mod*iv%mod;
}

ll cnt(ll a,ll b)
{
    return (1+a)*a%mod*iv%mod*b%mod;
}

int main()
{
    ll a,b;iv=qp(2,mod-2);ll ans=0;
    while(cin>>a>>b)
    {
        ans=0;
        ll x1,x2,y1,y2;
        cin>>x1>>x2>>y1>>y2;
        if(b<y1||a<x1)
        {
            ans=(ans+Cnt(a,b)+a*b%mod*(y2-y1)%mod*(x2-x1)%mod)%mod;
        }
        else if((a>=x1&&a<=x2)&&(b>=y1&&b<=y2))
        {
            ans=((ans+Cnt(a,b)+a*b%mod*(y2-y1)%mod*(x2-x1)%mod-Cnt(a-x1,b-y1))%mod+mod)%mod;
        }
        else if((a>=x1&&a<=x2)&&(b>y2))
        {
            ans=((ans+Cnt(a,b)+a*b%mod*(y2-y1)%mod*(x2-x1)%mod-Cnt(a-x1,y2-y1)-cnt((a-x1),(b-y2))*(y2-y1)%mod)%mod+mod)%mod;
        }
        else if((a>x2)&&(b>=y1&&b<=y2))
        {
            ans=((ans+Cnt(a,b)+a*b%mod*(y2-y1)%mod*(x2-x1)%mod-Cnt(x2-x1,b-y1)-cnt((b-y1),(a-x2))*(x2-x1)%mod)%mod+mod)%mod;
        }
        else
        {
            ans=((ans+Cnt(a,b)+a*b%mod*(y2-y1)%mod*(x2-x1)%mod-Cnt(x2-x1,y2-y1)-cnt(x2-x1,b-y2)*(y2-y1)-cnt(y2-y1,a-x2)*(x2-x1)-(a-x2)*(b-y2)%mod*(x2-x1)%mod*(y2-y1)%mod)%mod+mod)%mod;
        }
        cout<<ans<<endl;
    }
    return 0;
}