Unusual Product(codeforces)



  题目大意是将一个矩阵进行某一行(列)求每个元素的逆,

输出是将第i行与第i列的对应元素相乘,然后相加,最后将所以行列求得的所以数相加求和,%2后输出。

  1 n 代表将第n行的元素求逆

  2 n 代表将第n列的元素求逆

  3   代表输出结果

 解题思路:

单纯模拟是由于操作的次数过多,每次操作最少要达到    ON3),操作次数最多要达到10的六次方,最后可定会超时。

我们仔细分析后可以发现,其实对一个矩阵来说,影响其输出的只有主对角线上的元素,其他元素与其对应元素的乘积必定会出现两次。所以我们只要关注对角线元素就行。

我们要是再仔细分析下就会发现,其实每一次行列操作只会改变一个主对角线上的值,所以每操作一次结果就要改变一次,又由于结果只能是01。也就是所每次操作过后,将原有结果求逆就行了。

我的代码:

#include <cstdio>

#include <algorithm>

using namespace std;

int n,s,a;

int main (){

  while (scanf("%d",&n)!=EOF){

    s=0;

    for (int i=1;i<=n;i++){

      for (int j=1;j<=n;j++){

        scanf("%d",&a);

        if (i==j) s+=a;

      }

    }s%=2;

    int k;scanf("%d",&k);

    for (int i=0;i<k;i++){

      int q,m;scanf("%d",&q);

      if (q==1||q==2) {scanf("%d",&m);s=!s;}

      if (q==3) printf("%d",s);

    }

    printf("\n");

  }

  return 0;

}

.equals(Obje​​ct)方法在Java中用于比较两个对象是否相等。它检查两个对象的内容是否相同而不是引用是否相同。通常,我们可以使用"=="运算符来比较基本数据类型的值或判断两个对象引用是否相等。但是,对于比较复杂的对象,比如自定义的类对象,它们可能具有相同的属性值,但却不被认为是相等的,因为它们不是同一个对象的实例。 .equals(Obje​​ct)方法为我们提供了一种自定义比较两个对象内容的方式。这个方法是从Object类继承而来的,因此在所有的类中都可用。某些类,比如String类、Integer类等,已经重写了.equals(Obje​​ct)方法,以便实现比较它们的内容。但是,对于自定义的类,如果不重写.equals(Obje​​ct)方法的话,将继承Object类的默认实现,即比较两个对象的引用是否相等。 与"=="运算符相比,.equals(Obje​​ct)方法的作用更灵活、更具体。它可以根据具体的比较规则来决定两个对象是否相等。但是,由于.equals(Obje​​ct)方法的默认实现比较对象的引用,所以在自定义类中使用.equals(Obje​​ct)方法时,需要注意重写该方法以实现我们自己的比较逻辑。 综上所述,.equals(Obje​​ct)方法在Java中是相对不寻常的,因为大部分时候我们可以使用"=="运算符来比较对象引用是否相等。然而,在比较复杂对象内容时,.equals(Obje​​ct)方法提供了一种更具体、更灵活的比较方式。这是Java中为了满足不同需求而提供的一种对象比较工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值