问一道“由于答案可能会很大,请你将结果对10^9 + 7取模后再返回”的题目

第一次发贴,格式不对请多多原谅。

想请教各位大牛,我是编程初学者。碰到这个题目,在数字较小时,我的程序是写对的,但是它这个大数字,取模操作,该程序又应该怎么写呢?谢谢!

下面是题目下方:

==============================================================

网格(grid)

【问题描述】

有一个 n*m 的网格,你需要求出网格中有多少个正方形和多少个长方形(不包括正方形)。例如:当 n=2,m=3 时,网格形如下图:

其中,1*1 的正方形共有 6 个,2*2 的正方形共有 2 个,所以正方形有 8 个。1*2的长方形有 7 个,1*3 的长方形有 2 个,2*3 的长方形有 1 个,所以长方形有 10 个。

由于答案可能会超出 64 位整数范围,你需要输出答案对 1000000007(10^9+7) 取模

的结果。

【输入格式】

一行两个整数 n 和 m。

【输出格式】

一行两个整数,分别表示正方形的数量与长方形的数量对 1000000007 取模的结果。

【输入输出样例】

 

样例输入1

2 3

样例输出 1

8 10

 

样例输入2

100 75

样例输出 2

214700 14177800

 

样例输入3

114514 1919810

样例输出 3

952234331 997363822

 

【数据范围】

 对于 20%的数据,n,m<=3;

 对于 40%的数据,n,m<=100;

 对于 60%的数据,n,m<=5000;

 对于 80%的数据,n,m<=100000;

 对于所有数据,1<=n,m<=10^9。

 

注意:

答案需要对 1000000007 取模,并且模意义下不能直接进行除法运算,例如1000000008 除以 2 的结果是 500000004,1000000008 对 1000000007 取模的结果为 1,将 1 直接除以 2 并不能得到 500000004。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。

首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:编程语言、Java开发、python、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、安装包资源发送或安装、软件使用指导等服务。

我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

#include <iostream>
#include <cstdio>
using namespace std;

int main(){
	int n,m;
	unsigned long long zfx=0,sum1=0,sum2=0;	 //zfx正方形;
	cin>>n>>m;	
	if(n>m) swap(n,m);
	for(int i=1;i<=n;i++)
		zfx+=(n-i+1)*(m-i+1);
    zfx%=1000000007;
	cout<<zfx<<" ";

	for(int i=1;i<=n;i++)
		sum1+=i;
	for(int i=1;i<=m;i++)
		sum2+=i;	
	cout<<(sum1*sum2)%1000000007-zfx;
	
	return 0;
}

 

请问你自己有多少思路呢? 请把思路写出来。  取模就按照正常方式即可。