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,网站验证的时候可能给的答案会是大于零的,导致我后面的判断一直错误,最后也会输出一个错误的结果。

然后就是一些细节的地方要注意,比如说每一行后面看看需不需要加“;”之类的问题,我在刚开始写代码的时候经常会忘记在定义完一个未知数后加上“;”。

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务