求和VII

icpc

题目描述

一个无限大的二维矩阵d,满足di,j=i+j-1。再给定x1,y1,x2,y2,你需要求出矩阵d在以x1,y1为左上角、x2,y2为右下角的矩形内的元素和,即需要求出


的值。为了避免大规模的输出,你只需要输出答案对一个给定的大整数m取模后的结果。

输入

一行五个正整数x1,y1,x2,y2,m

输出

输出一个整数,为所求的答案对m取模后的结果。

样例输入

2 1 5 3 10007

样例输出

54

代码

import java.util.*;
import java.math.*;
public class Main {
    public static void main(String []args){
        Scanner cin=new Scanner(System.in);
        BigInteger x1,y1,x2,y2,mod,n,m;
        x1=cin.nextBigInteger();
        y1=cin.nextBigInteger();
        x2=cin.nextBigInteger();
        y2=cin.nextBigInteger();
        mod=cin.nextBigInteger();
        BigInteger p1,p2;
        p1=BigInteger.valueOf(1);
        p2=BigInteger.valueOf(2);
         
        n=x2.subtract(x1).add(p1);
        m=y2.subtract(y1).add(p1);
        BigInteger a1=x1.add(y1).subtract(p1);
//      a1=a1.subtract(p1);
         
        BigInteger a2=m.multiply(a1);
        BigInteger a3=m.multiply(m.subtract(p1)).divide(p2);
        BigInteger a=a2.add(a3);
//      System.out.println(n+" "+m+" "+p1+" "+a1+" "+a2+" "+a3+" "+a);
        a=a.mod(mod);
        BigInteger ans1=n.multiply(a);
        BigInteger ans2=m.multiply(n).multiply(n.subtract(p1)).divide(p2);
        BigInteger ans=ans1.add(ans2);
        ans=ans.mod(mod);
//      String an=ans.toString();
        System.out.println(ans);
          
         
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。