C-攻城_第十九届同济大学程序设计竞赛暨高校网络友谊赛 (nowcoder.com)
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
Rolnan城有 n(0≤n≤105)n(0\leq n \leq 10^5)n(0≤n≤105) 个堡垒,每个堡垒有生命值 hi(1≤hi≤109)h_i(1\leq h_i \leq 10^9)hi(1≤hi≤109),当堡垒的生命值变为0,它将被摧毁,LiuGod可以使用魔法打击这些堡垒。
LiuGod的每次魔法可以对任意一个堡垒造成1点伤害;特别的,由于LiuGod很崇拜 `clearlove7` ,他的每第 7 次魔法(7/14/21/...)会对所有的堡垒造成1点伤害。
现在LiuGod为了彻底打击Rolnan,决定要在最后一次打击中一次性全部摧毁Rolnan城的堡垒,现在他想询问能不能完成。
注意,每次打击都必须完成;同时要保证每个堡垒只在最后一次打击中被摧毁。
输入描述:
第一行一个整数 T(1≤T≤103)T(1\leq T\leq 10^3)T(1≤T≤103),表示数据组数。 接下来每组数据,第一行一个整数 nnn,接下来一行 nnn 个整数表示 h1,h2,…,hnh_1,h_2,\dots,h_nh1,h2,…,hn。 保证 ∑n≤106\sum n\leq 10^6∑n≤106。
输出描述:
对于每组数据,输出"YES"或"NO",表示能否达到LiuGod的要求。
示例1
输入
复制3 3 3 2 4 4 1 1 1 1 3 10 1 7
3 3 3 2 4 4 1 1 1 1 3 10 1 7
输出
复制YES NO NO
YES NO NO
备注:
n=0视为直接完成了任务
@@@@@@@@@****************
刚看题目的时候觉得很简单,但是前面wa的八次感觉都没有理解好题,一直都和七想到一起,对七整除和取模,后面看了题解之后,原来不是,是这样的,因为遇到是七的整除的数,.可以按一整个轮回求,每一轮就是(n+6),只要最后的总和是(n+6)的倍数,并且最小的那个数大于减去的总次数就就可以了,但是要n是0或1的时候要特判,要记得初始化
********************@@@@@@@@
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll a[N];
ll n,b,t;
ll sum;
int main(){
int i;
scanf("%lld",&t);
while(t--)
{
ll m=2e9;
scanf("%lld",&n);
sum=0;
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
sum=sum+a[i];
m=min(m,a[i]);
}
if(n<=1)
{
puts("YES");
continue;
}
if(sum%(n+6)==0&&m>=sum/(n+6)) puts("YES");
else puts("NO");
}
return 0;
}