题目描述
一个无限大的二维矩阵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);
}
}
网友评论