heystar

A.糖果

题目链接

链接

题目描述

给定三个正整数 a,b,c。

请计算 ⌊a+b+c2⌋,即 a,b,c 相加的和除以 2 再下取整的结果。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。

每组数据占一行,包含三个正整数 a,b,c

输出格式

每组数据输出一行结果,表示答案。

数据范围

前三个测试点满足 1 ≤ T ≤ 10
所有测试点满足 1 ≤ T ≤ 1000,1 ≤ a,b,c ≤ 10^16

输入样例:

4
1 3 4
1 10 100
10000000000000000 10000000000000000 10000000000000000
23 34 45

输出样例:

4
55
15000000000000000
51

难度:简单

时/空限制:1s / 256MB

总通过数:1217
总尝试数:1677

来源:AcWing,第61场周赛

思路

模拟,水题

代码

点击查看代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

typedef long long ll;

void solve()
{
	ll a , b , c;
	cin >> a >> b >> c;
	
	cout << (a+b+c)/2 << endl;
}

int main()
{
	int T;
	cin >> T;
	
	while(T --)
		solve();
		
	return 0;
}

B.指针

题目链接

链接

题目描述

给定一个如下图所示的全圆量角器。

image

初始时,量角器上的指针指向刻度 0。

现在,请你对指针进行 n 次拨动操作,每次操作给定一个拨动角度 ai,由你将指针拨动 ai 度,每次的拨动方向(顺时针或逆时针)由你自由决定。

请你判断,能否通过合理选择每次拨动的方向,使得指针最终仍然指向刻度 0。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个整数 ai,表示一次操作的拨动角度。

输出格式

如果可以做到指针最终仍然指向刻度 0,则输出 YES,否则输出 NO。

数据范围

前 4 个测试点满足 1 ≤ n ≤ 3
所有测试点满足 1 ≤ n ≤ 15,1 ≤ ai ≤ 180

输入样例1:

3
10
20
30

输出样例1:

YES

输入样例2:

3
10
10
10

输出样例2:

NO

输入样例3:

3
120
120
120

输出样例3:

``YES```

难度:中等

时/空限制:1s / 256MB

总通过数:960
总尝试数:2549

来源:AcWing,第61场周赛

思路

对于每一个a[i]来说都有两种选择,向左转,或者向右转,因此用dfs

代码

点击查看代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

const int N = 20;

int n;
int a[N];
bool flag = false;

void dfs(int u,int d)//u:次数,d:度数 
{
	if(d % 360 == 0 && u == n)
	{
		flag = true;
		return;
	}
	
	if(u == n)
		return;
	
	
	dfs(u+1,d+a[u]);
	dfs(u+1,d-a[u]);
}

int main()
{
	cin >> n;
	
	for(int i = 0;i < n;i ++)
		cin >> a[i];
	
	dfs(0,0);
	
	if(flag)
		cout << "YES" << endl;
	else
		cout << "NO" << endl;
	
	return 0;
}

分类:

AcWing

技术点:

相关文章: