这题好水

P1548 [NOIP1997 普及组] 棋盘问题

膜拜daolao(~~然而我真的没学过~~)
by Accele_Rator @ 2017-11-04 19:21:18


搜索比较简单吧,要不然还要推公式。
by hjfzzm @ 2017-11-04 19:23:53


没学过【仰望巨佬】.
by 鸫鸦 @ 2017-11-07 15:11:31


~~没学过~~
by 作死成功了 @ 2017-12-06 20:19:37


好水好水!!~~(然而我做了一个小时,突然想起公式)~~
by ⚡GG⚡ @ 2018-03-03 15:01:00


```cpp #include<bits/stdc++.h> using namespace std; int main() { int n,m,c=0,z=0,i,j,k=0,o=0; cin>>n>>m; for(i=0;i<=n;i++) z=z+(m-i)*(n-i); for(i=n;i>=1;i--) k+=i; for(i=m;i>=1;i--) o+=i; for(i=1;i<=o;i++) for(j=1;j<=k;j++) c++; cout<<z<<" "<<c-z; return 0; } ``` 18行
by ⚡GG⚡ @ 2018-03-03 15:05:00


@[垃圾一个](/space/show?uid=85933) 请问您, for(i=n;i>=1;i--) k+=i; for(i=m;i>=1;i--) o+=i; for(i=1;i<=o;i++) for(j=1;j<=k;j++) c++; 能解释一下吗,我看不太懂
by altar @ 2018-11-06 16:54:51


@[垃圾一个](/space/show?uid=85933) 这是我的代码,我也吭哧了半个多小时了,正方形的求出来了,长方形的还未知,您代码里,是如何把所有的四边形求出来的呢? #include <cstdio> int n , m , sm , yhm ; int f[5] ; int main ( ) { // sm is solve the squares // yhm is solve the rectangles scanf ( "%d%d" , &n , &m ) ; if ( n > m ) if ( n % m == 0 ) f[1] = n / m ; else f[2] = n / m + 1 ; else if ( m % n == 0 ) f[3] = m / n ; else f[4] = m / n + 1 ; sm = n * m + // at first f[1] + f[2] + // if n > m f[3] + f[4] ; // if m > n yhm = 1 + n + m ; // the biggest , the line , and the column // and then , we should look at the inside for ( int i = 1 ; i <= m ; i ++ ) for ( int j = 1 ; j <= n ; j ++ ) { if ( i == j ) continue ; if ( i == m && j == n ) continue ; yhm ++ ; } printf ( "%d %d" , sm , yhm ) ; return 0 ; }
by altar @ 2018-11-06 16:56:50


@[Youngore](/space/show?uid=58324) 这里是跑正方形长方形,公式详见《小学奥数举一反三5年级A版》
by ⚡GG⚡ @ 2018-11-06 19:44:34


四边形个数=(m+1)\*(n+1)\*m*n 长方形个数=四边形个数-正方形个数
by dinglinxi0409 @ 2021-07-18 16:10:21


|