pat的一道题
提交之后有两个测试点过不去
我的代码如下
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
double fu = 0,ou = 0,a_2 = 0;
int i = 0;
if(s.charAt(0)==45){
//如果是负数
fu = 0.5;
}
while(i<s.length()){
//判断2 的个数
if((s.charAt(i)-48)==2){
a_2++;
}
i++;
}
if(s.charAt(s.length()-1)%2==0){
//如果是偶数
ou = 1.0;
}
double fan2 = 0;
if(fu==0){//正数
fan2 = a_2/((double)(s.length()));
}else{//负数
fan2 = a_2/(s.length()-1)*(ou+fu);
}
//测试2的个数/总字符串长度的值
System.out.println(fan2);
System.out.printf("%.2f%%",fan2*2*100);
}
}
请问这是哪点没有通过呢?
PHPz2017-04-18 10:18:07
질문자는 질문의 의미를 명확하게 이해하지 못했습니다. 음수는 0.5배 증가하고 1.5를 곱해야 합니다. 짝수는 1 증가하고 2를 곱해야 합니다.
fan2 = a_2/(s. length()-1)* (ou+fu); // 비율 계수를 올바르게 곱했습니까?
양수도 있고 짝수도 있는데 다른 경우는 어떻게 통과하셨는지 모르겠네요
伊谢尔伦2017-04-18 10:18:07
으아아아
그리고 @zjupure 님 말씀대로 질문자님의 질문 이해가 편향된 것 같은 느낌이 드는데, @zjupure 님 말씀대로 저도 이해했습니다.
그런데 이상한 점은 질문자의 코드도 66.67%의 테스트를 통과했다는 것입니다...
또한, 일부 테스트는 경계 조건 및 입력 매개변수 검증이 판단되지 않기 때문에 실행되지 않을 수 있습니다. 예를 들어 입력이 숫자가 아니거나, +0, -0과 같은 값도 피험자가 추가할 수 있습니다. 들어가십시오 (이 코드를 알고리즘 질문으로 작성하는 것은 기분이 좋지 않지만 테스트를 통과하려면 ...).