阿里巴巴春季2023届校园招聘在线笔试研发岗3.4场
1.晶体的数目
题目大意:
一种多边形晶体材料时间每经过1秒,每边晶体数量会增加1个
增加的晶体尺寸规则如下
问A个生长时间为B的晶体块一共有多少个“单位晶体”,给定晶体边数量和晶体生长时间。
(数据范围:
1
≤
n
≤
1
0
3
,
3
≤
A
≤
100
,
0
≤
B
≤
100
1\leq n \leq 10^3,3 \leq A \leq 100,0 \leq B \leq 100
1≤n≤103,3≤A≤100,0≤B≤100)
思路:
对于每一个图形,起始为1,每秒增加
(
A
−
2
)
(A-2)
(A−2)条有相交的直线晶体,一条直线晶体数量为
i
+
1
,
i+1,
i+1,交点数量为
(
A
−
3
)
(A-3)
(A−3),
交点重复计算要减掉。所以每秒增加量为
(
A
−
2
)
∗
(
i
+
1
)
−
(
A
−
3
)
(A-2)*(i+1)-(A-3)
(A−2)∗(i+1)−(A−3)。
参考程序:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n, A, B;
cin >> n;
ll ans = 0;
while (n--)
{
cin >> A >> B;
ans++;
for (int i = 1; i <= B; i++)
{
ans += (A - 2) * (i + 1) - (A - 3);
}
}
cout << ans << endl;
return 0;
}
/*
2
3 4
5 3
37
2
10 11
99 88
380481
*/