NC19934. [CQOI2014]数三角形
描述
输入描述
输入一行,包含两个空格分隔的正整数m和n。
输出描述
输出一个正整数,为所求三角形数量。
示例1
输入:
2 2
输出:
76
说明:
数据范围C++ 解法, 执行用时: 55ms, 内存消耗: 404K, 提交时间: 2022-02-14 16:53:42
#include<bits/stdc++.h> using namespace std; #define ll long long ll n,m; int main(){ cin>>n>>m; n++,m++; ll ans=(n*m)*(n*m-1)*(n*m-2)/6; if(n>=3)ans-=n*(n-1)*(n-2)*m/6; if(m>=3)ans-=m*(m-1)*(m-2)*n/6; for(int i=2;i<=n;i++){ for(int j=2;j<=m;j++){ ans-=2*(__gcd(i,j)-1)*(n-i)*(m-j); } } printf("%lld\n",ans); return 0; }
Python3 解法, 执行用时: 921ms, 内存消耗: 4632K, 提交时间: 2023-04-07 21:21:51
import math n,m = input().split() n = int(n) m = int(m) h = (m+1)*(n+1) x1 = h*(h-1)*(h-2)//6 if(n>=2): x1 -= (m+1)*(n+1)*n*(n-1)//6 if(m>=2): x1 -= (n+1)*(m+1)*m*(m-1)//6 for i in range(1,n+1): for j in range(1,m+1): x1 -= (n-i+1)*(m-j+1)*(math.gcd(i,j)-1)*2 print(x1)