数据结构第二周
第二周
-
POJ1004--财务管理问题
public class Average {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0.0;
for (int i = 0; i < 12; i++) {
sum += scanner.nextDouble();
}
//不管传入的任何值,均保留两位小数
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(sum/12));
/*另一种方法
String s = String.format("%.2f", sum);
//将String转成Double
Double d = Double.parseDouble(s);
System.out.println(d/12);
其中String s=String.format("%.2f",d)表示小数点后任意两位小数,其中2为表示两位小数,若需要三位小 数,把2改为3即可,其他同理。
总结:这种方法不管传入的值是多少,均保留两位小数,并且符合四舍五入的规则。
*/
}
}
-
HDU2012--素数判定问题
public class Hdu2012 { public static void main(String[] args) { Scanner input=new Scanner(System.in); while (input.hasNext()){ int x=input.nextInt(); int y=input.nextInt(); //打标记 默认为true Boolean flag1=true; if(x==0&&y==0){ break; } //在范围内判断 for(int i=x;i<=y;i++){ if(judge(i)==false){ flag1=false; } } if(flag1==true){ System.out.println("OK"); } else { System.out.println("Sorry"); } } } //判断是否为素数 public static boolean judge(int n){ int i=n*n+n+41; Boolean flag=true; for (int j=2;j<i;j++){ if(i%j==0){ flag=false; } } return flag; } } -
POJ1001--求高精度幂
import java.util.Scanner;
import java.math.*;
public class Poj1001{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//如果不断有输入,则不断执行循环体里面的代码
while (sc.hasNext()) {
//以下i行代码将bigInteger转化成bigDecimal
BigDecimal bd = new BigDecimal(sc.next());
// 返回其值为 (thisn) 的 BigDecimal,准确计算该幂,使其具有无限精度。
BigDecimal result = bd.pow(sc.nextInt());
//1)stripTrailingZeros().返回数值上等于此小数,但从该表示形式移除所有尾部零的 BigDecimal。
//2)toPlainString().返回不带指数字段的此 BigDecimal 的字符串表示形式。
String s = result.stripTrailingZeros().toPlainString();
//如果整数部分是0,直接从小数点开始截取
if(s.startsWith("0")) {
s=s.substring(1);
}
System.out.println(s);
}
}
}
- POJ1003--Hangover
import java.util.Scanner;
/**
* 先确定题目中所需要的变量,f—读取的长度,sum—计算的长的,n—卡片数量,初始直接将n设置为1,sum设置为0.5,
* 因为它只要有长度那必然要用一张卡片,第一张卡片的长度就是0.5。然后进行累加,每次加上1/(n+1)的长度。
* 然后与f进行比较,大于f直接输出,然后初始化n,sum重新开始计算下一步,按照题目给的方式输出,小于继续循环累加。
* */
public class Poj1003 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
double f = sc.nextDouble();
if (f==0){
return;
}
if (f<0.5){
System.out.println("1 card(s)");
continue;
}
int ans =1;
double sum = 0.5;
int base = 2;
do {
base++;
ans++;
sum +=1.0/base;
}while (sum<f);
System.out.println(ans+" card(s)");
}
}
}