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.指针
题目链接
题目描述
给定一个如下图所示的全圆量角器。
初始时,量角器上的指针指向刻度 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;
}