HDU 4493 Tutor 水题的收获。。
题目: http://acm.hdu.edu.cn/showproblem.php?pid=4493
题意我都不好意思说,就是求12个数的平均数。。。
但是之所以发博客,显然有值得发的。。。
这个题最坑的地方就是结果精确到便士,也就是小数点后2位,不输出后缀0,所以需要处理一下输出格式。
一开始我是用c语言这样写的:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 int t; 7 scanf("%d", &t); 8 while(t--) 9 { 10 double x, sum = 0; 11 for(int i = 0; i < 12; i++) 12 { 13 scanf("%lf", &x); 14 sum += x; 15 } 16 char str[50]; 17 sprintf(str, "%.2lf", sum/12.0); 18 int len = strlen(str); 19 while(str[len-1] == '0') 20 len--; 21 if(str[len-1] == '.') 22 len--; 23 str[len] = 0; 24 printf("$%s\n", str); 25 } 26 return 0; 27 }
总感觉硬生生的修改字符数组不舒服,不便于封装,然后发现了java的DecimalFormat类,这个类很强大,可以定义浮点数输出格式,直接就能A掉这一题,所以记录一下,以免日后忘了。
1 import java.text.DecimalFormat; 2 import java.util.Scanner; 3 4 public class Main { 5 private static Scanner input; 6 public static void main(String[] args){ 7 input = new Scanner(System.in); 8 int t; 9 DecimalFormat f = new DecimalFormat("#.##"); 10 11 t = input.nextInt(); 12 while(t-- > 0) { 13 double x, sum = 0; 14 for(int i = 0; i < 2; i++) { 15 x = input.nextDouble(); 16 sum += x; 17 } 18 System.out.println('$' + f.format(sum / 2.0)); 19 } 20 } 21 }