30201象棋中的皇后
難度級別:b; 執行時間限制:1000ms; 執行空間限制:51200kb; **長度限制:2000000b
試題描述
在n×m的棋盤上放置兩個相互攻擊的皇后,總共有多少種不同的方案?例如當n=2,m=2時答案為12,當n=100,m=223時答案為10907100。說明:如果同乙個棋盤上的某一行,或某一列,或某一斜線(兩個方向上的對角線)上有兩個皇后就會相互攻擊。當n=2,m=2時,其放置方案如下圖所示:
輸入一行,包含兩個整數n,m,由乙個空格隔開。
輸出乙個數,表示在n×m棋盤上放兩個相互攻擊的皇后的方案數。
輸入示例
100 223
輸出示例
10907100
其他說明
資料範圍:0≤m,m≤1000000
題解:其實是一道計數好題。。。
先得有個公式:多項平方和公式:1^2+2^2+3^2+…+n^2=n(n+1)(2n+1)/6
豎著的、橫著的都還好。對於對角線,窩萌只要注意到長度的變化即可,別忘了有兩條對角線!
然後算一下發現並不會溢位,所以就這樣了。。。
1 #include2 #include3 #include4 #include5 #include6 #include7#define pau putchar(' ')
8#define ent putchar('\n')
9using
namespace
std;
10 inline unsigned long
long
read()
13while(isdigit(ch)) x=10*x+ch-'
0',ch=getchar();
14return x*sig;15}
16 inline void write(unsigned long
long
x)if(x<0) putchar('
-'),x=-x;
18int len=0;unsigned long
long buf[15];while(x) buf[len++]=x%10,x/=10;19
for(int i=len-1;i>=0;i--) putchar(buf[i]+'
0');return;20
}21 unsigned long
long
n,m;
22void
init()
28void
work()
31void
print()
34int
main()
COJ 1224 ACM小組的古怪象棋
大概是以後一定要注意輸入輸出 比如 題目最小給的座標是從 1,1 開始的 那再去判斷是否陣列越界的時候 就需要特別注意了 道理我懂 然後因為這個問題以及在給輸入座標減1的時候 一不小心把m,n也算進去了 然後就炸了我乙個小時 雞今天打rank的第一道也是這樣 拿到題目我考慮到了行 卻沒有考慮到列 炸...
coj 1224 ACM小組的古怪象棋
acm小組的samsara和staginner對中國象棋特別感興趣,尤其對馬 可能是因為這個棋子的走法比較多吧 的使用進行深入研究。今天他們又在 構思乙個古怪的棋局 假如samsara只有乙個馬了,而staginner又只剩下乙個將,兩個棋子都在棋盤的一邊,馬不能出這一半棋盤的範圍,另外這 一半棋盤...
COJ1224 ACM小組的古怪象棋
題目鏈結 題目大意 棋盤上有乙個馬和乙個帥,現給定棋盤的大小及馬和帥的位置,假定帥不能移動,求馬最少在多少步之內能吃到帥。這題我wa了4次,第乙個錯誤是沒有考慮到帥可能會阻擋馬的路線,第二個錯誤是初始化t n n 時不小心將兩個迴圈中都寫成了n,而棋盤的大小是n m。view code 1 incl...