H 充电器
问题描述
小蓝有一个充电器,可以使用不同的电压和电流充电。
给定充电器工作的记录,请计算在这个记录期间总共通过充电传输了多少电能。
输入格式
输入第一行包含一个整数 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。
解析
使用Java的SimpleDateFormat类和数组处理时间和电压电流等数据
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static void main(String[] args)throws Exception {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//下面代码表示格式化一个日期,因为我们只用到了时分秒,所以只格式化时分秒即可
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
Date[] dates = new Date[n];//日期数组,存放我们输入的n个时间
int[] U = new int[n]; //电压数组,存放我们每次输入的电压
int[] I = new int[n]; //电流数组,存放我们每次输入的电流
int sum=0; //存放我们要求的结果 焦耳
for (int i = 0; i < n; i++) {
dates[i]=simpleDateFormat.parse(scanner.next());//将我们每次输入的字符串时间存放到
//Date数组中 循环过后Date数组中存放的是我们输入的n个时间的时分秒
U[i] = scanner.nextInt();
I[i] = scanner.nextInt();
}
for (int i = 0; i < n-1; i++) {
//计算产生的焦耳,每次输入的电流电压(对应的是该时间内我们给定的电流电压)乘这段时间
//这段时间就是Date数组中下一个元素的值减去该元素的值 getTime得到的是毫秒,所以要转换为秒进行运算
sum+=U[i]*I[i]*((dates[i+1].getTime()-dates[i].getTime())/1000);
}
System.out.println(sum);
}
}