问
  • 板块灌水区
  • 楼主S_Z_Xcoco
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/7/13 18:53
  • 上次更新2024/7/13 20:21:25
查看原帖
问
918508
S_Z_Xcoco楼主2024/7/13 18:53

轰炸机

题目描述

机器猫喜欢打游戏。某游戏中有一个叫做「维和轰炸机」的单位,在一轮轰炸中拥有 3 颗弹药。

敌方拥有 nn 个单位,每个单位有对应的血量。维和轰炸机的每颗弹药可以对一个敌方单位造成 100 伤害,3 颗弹药可以丢给不同的敌方单位。

敌方单位在血量小于等于 0 时,视为被摧毁。例如,某敌方单位血量为 260,则投 2 颗弹药之后其血量为 60,再投一颗弹药可以将其摧毁。

给定各个敌方单位的血量,问一轮空袭至少需要出动多少架维和轰炸机,才能摧毁全部敌方单位。

输入格式

第一行,一个正整数 nn,表示敌方单位数量。

接下来一行,nn 个正整数,表示敌方各个单位的血量。

输出格式

仅一行,一个正整数,表示需要出动的维和轰炸机数量。

样例 #1

样例输入 #1

1
260

样例输出 #1

1

样例 #2

样例输入 #2

2
200 400

样例输出 #2

2

样例 #3

样例输入 #3

2
199 401

样例输出 #3

3

提示

样例解释

第一个样例,只需要一架飞机空投全部弹药。

第二个样例,第一架飞机向敌方单位 1 丢两颗弹药,向敌方单位 2 丢一颗弹药;第二架飞机向敌方单位 2 丢三颗弹药。

第三个样例,第一架飞机向敌方单位 1 丢两颗弹药,向敌方单位 2 丢一颗弹药;第二架飞机向敌方单位 2 丢三颗弹药;此时敌方单位 2 还剩 11 的血量,需要第三架飞机向敌方单位 2 丢一颗弹药。

数据规模与约定

对于前 30%30\% 的数据,保证敌方有且仅有一个单位,且该单位的血量是 300300 的倍数。

对于前 60%60\% 的数据,保证敌方单位不超过 1010 个,敌方单位血量均为 100100 的倍数。

对于 100%100\% 的数据,保证敌方单位不超过 100000100000 个,每个敌方单位的血量不超过 10810^8。

my code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,a[100001],s;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s+=ceil(a[i]*1.0/100);
    }
    cout<<ceil(s*1.0/3);
    return 0;
}

我的问题:为什么把cout<<ceil(s*1.0/3)换成cout<<(s+3-1)/3就可以AC了?这两个不是都表示向上取整吗?

2024/7/13 18:53
加载中...