10.3
#include<iostream>
using namespace std;
long long f(long long x,long long y,long long a,long long b,long long c,long long d,long long e)
{
return a*x*x + b*x + c*y*y + d*y + e;
}
int main()
{
int T;
cin >> T ;
for (int i=0;i<T;i++)
{
long long n,m;
cin >>n >>m;
long long a,b,c,d,e;
cin >> a >> b >> c >> d >> e;
long long sum_min = f(-n+1,-m+1,a,b,c,d,e) ;
for (long long x = -n+1;x<n; x++)
{
for (long long y = -m+1;y<m; y++)
{
long long sum = f(x,y,a,b,c,d,e);
if(sum <= sum_min)
{
sum_min = sum;
}
}
}
cout << sum_min <<endl;
}
return 0;
}
刚开始做题,发现真正能让水平提升的不是去做一个一个的题,更多的还是要不断地找bug,去把自己的逻辑改成电脑的逻辑,对着每一行代码去尝试用电脑的逻辑顺下去,看看自己到底写了个什么玩意。
上图这个题我开始定义x,y,a,b,c,d都是用的int,只有sum_min用的是long long,程序也一直没有报错,但是后续在跟学长沟通时被告知int相乘是先出来结果然后再把结果改成long long,所以结果一大就会在运算的过程中爆int,而且最初给sum_min赋值为0,网站验证的时候可能给的答案会是大于零的,导致我后面的判断一直错误,最后也会输出一个错误的结果。
然后就是一些细节的地方要注意,比如说每一行后面看看需不需要加“;”之类的问题,我在刚开始写代码的时候经常会忘记在定义完一个未知数后加上“;”。
阿里巴巴灵犀互娱公司福利 649人发布
查看9道真题和解析