题意:给出一个函数,问矩阵里所有的点的横纵坐标之和,矩阵的右上端点得在函数上
思路:推公式,(记得long long ),以纵坐标暴力要好一点,耗时少,并且不用判断x是否为整数。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 int main(){ 6 ll m,b; 7 scanf("%I64d%I64d",&m,&b); 8 ll Max=(1+b)*b/2; 9 Max=max(Max,(1+m*b)*m*b/2); 10 for(ll x=1;x<b;x++){ 11 12 ll y=b*m-x*m; 13 ll sum=(1+y)*y/2*(x+1)+(x+1)*x/2*(y+1); 14 // cout<<x<<" "<<y<<" "<<sum<<endl; 15 Max=max(Max,sum); 16 17 18 } 19 cout<<Max<<endl; 20 }