日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10行代码AC——UVA 11538-Chess Queen(数学规律+数列,附详细讲解)

發布時間:2024/2/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10行代码AC——UVA 11538-Chess Queen(数学规律+数列,附详细讲解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

勵志用盡量少的代碼做高效表達


提交(題目)連接——>UVA-11538


題目大意

求在n*m棋盤上放2個不一樣的皇后,且他們相互攻擊的方案數,也就是說,求2個不同的皇后在同一行、同一列或同一對角線的所有情況。

心路歷程

看到m、n的取值范圍和樣例的輸出值,太大了!先確定這是一道規律題。 并且用long long存儲。

首先找規律,找到規律后要么打表,要么推數學公式。

這道題可以采用分治的思想,將皇后攻擊的種類分成三部分考慮:同行攻擊,同列攻擊和同對角線攻擊。最后三部分相加。

同行攻擊:皇后A在每行中有n種放法,共m行。但在一行中皇后B只有n-1種放法。相乘得到n*m*(m-1)。

同列攻擊:同上,最后得:m*n*(n-1)

同對角線:設n≤m,所有/向的對角線,從左到右的長度依次為
有兩個方向的對角線,所以要乘2,得到如下公式:
對于

由于:1^2+2^2+3^2...+n^2 前n項和Sn=n(n+1)(2n+1)/6
因此有:S(n-1)=Sn-n=n(2n-1)(n-1)/6

對于

有:Sn=n(a1+an)/2

于是:


代碼展示:

#include<bits/stdc++.h> using namespace std; int main() {long long m, n; while(cin>>m>>n && m) {long long sum = 0;if(n > m) swap(m,n);sum = m*n*(n-1) + n*m*(m-1) + (2*n*(n-1)*(3*m-n-1))/3; cout << sum << endl;} return 0; }

如果這篇文章對你產生了幫助,就請給博主一個小小的贊吧!大家的點贊是我創作的最大動力!

總結

以上是生活随笔為你收集整理的10行代码AC——UVA 11538-Chess Queen(数学规律+数列,附详细讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。