问题描述
小蓝有一个充电器,可以使用不同的电压和电流充电。
给定充电器工作的记录,请计算在这个记录期间总共通过充电传输了多少电能。
输入格式
输入第一行包含一个整数 n , 表示记录的条数。
接下来 n 行,每行包含一个时刻 T 和两个非负整数 U, I,表示在时刻 T 充电电压变为 U(单位伏),电流变为 I(单位A)。最后一行满足 U 和 I 均为 0,在前面的行中也可能出现 U、I 为 0 的情况。其中时间表示为 HH:MM:SS 的格式,时分秒分别用两位十进制数表示(补前导零)。
输入保证时刻依次递增且在 00:00:00 至 23:59:59 的区间内,不用考虑跨过零点充电的情况。
输出格式
输出一个整数,表示总共通电的电能为多少焦耳,其中 1 焦耳等于 1 伏乘以1 安乘以 1 秒。
样例输入
3
12:00:00 12 1
12:01:02 5 2
12:01:10 0 0
样例输出
824
评测用例规模与约定
对于所有评测用例, 1 < = n < = 100 , 0 < = U , I < = 100 1<=n<=100,0<=U,I<=100 1<=n<=100,0<=U,I<=100
思路:焦耳的计算公式为W=U*I*T,UI我们可以从题目直接读出来,问题的关键在于时间T的处理,我们可以把通电后的时间与通电前的时间做差,并转换为秒,问题就迎刃而解了
#include <stdio.h>
int main()
{
int n = 0;
int I = 0;
int j = 0;
int u[100] = { 0 };
int i[100] = { 0 };
int s[100] = { 0 };
int f[100] = { 0 };
int h[100] = { 0 };
int sums = 0;
int sums2 = 0;
int J = 0;
int asum = 0;
scanf("%d", &n);
for (I = 0; I < n; I++)
{
scanf("%d:%d:%d %d %d", &h[I], &f[I], &s[I], &u[I], &i[I]);
}
for (j = 1; j < n; j++)
{
sums = h[j] * 3600 + f[j] * 60 + s[j]; //通电前的时间
sums2 = h[j - 1] * 3600 + f[j - 1] * 60 + s[j - 1]; //通电后的时间
J = (sums - sums2) * u[j - 1] * i[j - 1];//因为U I用的是通电前那一行的电压电流,所以要J-1
asum = asum + J;
}
printf("%d", asum);
return 0;
}