动态规划
题目链接
当n=1时,正方形的个数一定是m,所以dp[1]=m.
当n<=m时,dp[i]=dp[i-1]+(m-i+1)*i.
当n>m时,i与i+1的差就不变了,dp[i]=dp[i-1].
(dp[]是n * i与n * (i-1) 相差的正方形个数)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAX = 1e6+10;
int main()
{
int t;
cin>>t;
int n,m;
long long sum;
while(t--)
{
sum=0;
cin>>m>>n;
int dp[1060];
memset(dp,0,sizeof(dp));
dp[1]=m;
for(int i=1;i<=n; i++)
{
if(i<=m)
dp[i]=dp[i-1]+(m-i+1)*i;
else
dp[i]=dp[i-1];
sum+=dp[i];
}
cout<<sum<<endl;
}
return 0;
}