2023届3.4春招阿里第一场笔试研发岗题目总结及题解

阿里巴巴春季2023届校园招聘在线笔试研发岗3.4场

ps:题目来源nb网友口述

1.晶体的数目

题目大意:

一种多边形晶体材料时间每经过1秒,每边晶体数量会增加1个
增加的晶体尺寸规则如下

1.始终保持规则的正A边形,每条边上晶体数量相同
2.每经过一秒,晶体就会在外侧增加最少个数的“单位晶体”使得每个边上的晶体数目都增加1,并且保持正A边形的形状

问A个生长时间为B的晶体块一共有多少个“单位晶体”,给定晶体边数量和晶体生长时间。
(数据范围:1≤n≤103,3≤A≤100,0≤B≤1001\leq n \leq 10^3,3 \leq A \leq 100,0 \leq B \leq 1001n103,3A100,0B100

思路:

对于每一个图形,起始为1,每秒增加(A−2)(A-2)A2条有相交的直线晶体,一条直线晶体数量为i+1,i+1,i+1,交点数量为(A−3)(A-3)A3,
交点重复计算要减掉。所以每秒增加量为(A−2)∗(i+1)−(A−3)(A-2)*(i+1)-(A-3)(A2)(i+1)(A3)

参考程序:
#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
*/

等腰三角形

题目大意:

正n边形中等腰锐角三角形的数量

顶点必须在多边形的顶点上,只要有一个定点不同的就是不同的三角形

数据范围(3≤n≤1073 \leq n \leq 10^73n107

思路:

考虑多边形中每个点能构造多少个等腰锐角三角形,每个点只能和远端(中线另一端)的两个对称点构成等腰锐角三角形。
一共有n个点,所以一般情况下的结果为(n+1)/2/2∗n(n+1)/2/2*n(n+1)/2/2n。考虑特殊情况,如果n是4的倍数,每个点会出现一个等腰直角三角形的情况。
所以当nnn444的倍数时,答案要减去nnn。如果nnn333的倍数,会出现等边三角形的情况,导致重复计算。每个顶点会存在一个等边三角形,
所以被计算的等边三角形数量为nnn个,实际其中只应计算n/3n/3n/3个等边三角形。所以当nnn333的倍数时,答案要减去2∗(n/3)2*(n/3)2(n/3)

参考程序:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll n;
    cin >> n;
    ll ans = ((n + 1) / 2) / 2 * n;
    if (n % 4 == 0)
    {
        ans -= n;
    }
    if (n % 3 == 0)
    {
        ans -= 2 * (n / 3);
    }
    cout << ans << endl;
    return 0;
}
/*
3

1

4

0

5

5
*/

小红的扫雷游戏

题目大意:

ps:扫雷游戏,翻开的部分数字表示边上八个位置有多少个雷
给定一个4*4的地图矩阵,有一些位置已经被翻开,想知道根据已有的信息哪些确定是雷哪些不一定是雷。

思路:

BFS待补

参考代码
.121
....
....
....

o121
oxox
....
...

....
..8.
....
....

.XXX
.X8X
.XXX
....
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nuoyanli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值