题目描述:
有一 n × m 的方格棋盘 (1 <= m, n <= 1000),求出该棋盘中包含正方形、长方形(不包含正方形)的数量。
输入描述:
输入两个用空格分开的正整数 n 和 m,分别表示棋盘的宽和高。
输出描述:
占一行,两个用一个空格正整数,表示正方形和长方形的数量。
样例输入:
3 2
样例输出:
8 10
注意需要定义的数据的整型还是长整形,长整形与整型数据运算会有错误
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 unsigned long long n,m,i,j,min; 5 cin>>n>>m; 6 unsigned long long s=0,ss=0,t=0; 7 if(n<m){ 8 min=n; 9 } 10 else{ 11 min=m; 12 } 13 for(unsigned long long i=1;i<=min;i++){ 14 s=s+(n-i+1)*(m-i+1); 15 } 16 ss=(n*(n+1))*(m*(m+1))/4; 17 t=ss-s; 18 cout<<s<<' '<<t<<endl; 19 return 0; 20 }
#include<iostream> using namespace std; int main(){ unsigned long long n,m,i,j,s1=0,s2=0; cin>>n>>m; for(long long i=1;i<=min(n,m);i++) s1+=(m-i+1)*(n-i+1); s2=(n+1)*(m+1)*n*m/4; cout<<s1<<' '<<s2-s1; }