The 14th Jilin Provincial Collegiate Programming Contest Changchun University of Science and Technology, September 27, 2020
给定一个零矩阵,枚举所有的点对(i,j)(i,j)(i,j),其中i,ji,ji,j均为正整数,对于每一个点对(i,j)(i,j)(i,j),翻转一次满足要求的点(m,n)(m,n)(m,n),其中mmm是iii的倍数,nnn是jjj的倍数。问最后有多少为111的元素。翻转一次是指将元素的值vvv变成1−v1-v1−v。
我们知道对于任意一个点(x,y)(x,y)(x,y),其中xxx的约数个数为dxd_xdx个,yyy的约数个数为dyd_ydy个,那么它将翻转dx×dyd_x \times d_ydx×dy次,这个元素为111,当且仅当dx,dyd_x,d_ydx,dy均为奇数,根据算数基本定理,一个数的约数个数为奇数当且仅当这个数为完全平方数。
因此,答案为⌊m⌋×⌊n⌋\lfloor \sqrt{m} \rfloor \times \lfloor \sqrt{n} \rfloor⌊m⌋×⌊n⌋。其中m,nm,nm,n为行数和列数。