链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
小w给你三种图形,可能是平行四边形,三角形,梯形,对于给定的TTT个图形,你需要依次回答每个图形的面积,保证答案为整数。
输入描述:
共T+1T+1T+1行。 第一行一个整数T(1≤T≤105)T(1\leq T\leq 10^5)T(1≤T≤105),表示数据组数。 接下来TTT行,每行333或444个整数,第一个整数aaa代表图形的种类,a=1a=1a=1代表平行四边形,a=2a=2a=2代表三角形,a=3a=3a=3代表梯形。 若a=1a=1a=1或a=2a=2a=2,则该行有两个参数bbb,ccc,分别代表平行四边形或三角形的底和高。 若a=3a=3a=3,则该行有三个参数bbb,ccc,ddd,分别代表梯形的上底,下底和高。 保证面积不会超过10910^9109
输出描述:
共TTT行。 对于每组数据,输出对应图形的面积。
示例1
输入
复制1 1 1 1
1 1 1 1
输出
复制1
1
快来参加“大连大学2023年4月程序设计竞赛(同步赛)”~ 比赛时间:2023-04-15 10:00:00 - 2023-04-15 15:00:00,比赛时长:5小时,比赛地址:https://ac.nowcoder.com/acm/contest/55416。
//注本人的为错误代码,未通关。
//当时根据通关人数最多做的此题,直到比赛结束,从通关人数上来说,这题应该算签到题,不过不太理解错在哪里,题目要求输出整数,从样例来说,结果是0.5,题目输出为1,那么我当时想这个涉及到了向下取整,结果还是不对,然后就不知道如何做了,请大家指教。
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,a,b,c,d;
cin>>t;
while(t--){
double s=0;
cin>>a>>b>>c>>d;
if(a==1||a==2){
s=b*c/2.0;
}
else {
s=(b+c)*d/2.0;
}
cout<<ceil(s)<<endl;
}
return 0;
}