here is My C++ Accepted prog
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <fstream>
#include <numeric>
#include <iomanip>
#include <bitset>
#include <list>
#include <stdexcept>
#include <functional>
#include <utility>
#include <ctime>
using namespace std;
static double g[101][100009];
double get(int n, int m, int P, int A, int B){
double res = n * (P / 100.0) * A;
res += g[P][m] * B;
return res;
}
int main(){
for (int p = 0; p <= 100; ++p) {
g[p][0] = 0;
for (int i = 1; i < 100009; ++i) {
g[p][i] = g[p][i - 1] + (1.0 - pow(1.0 - p / 100.0, i - 1));
}
}
while (true) {
int N, P, A, B;
scanf("%d%d%d%d", &N, &P, &A, &B);
if (N == 0 && P == 0 && A == 0 && B == 0) break;
int l = 0, r = N;
while (l < r - 2) {
int ll = (l + l + r) / 3;
int rr = (r + r + l) / 3;
double tl = get(ll, N - ll, P, A, B), tr = get(rr, N - rr, P, A, B);
if (tl < tr) r = rr;
else l = ll;
}
double ans = get(l, N - l, P, A, B);
for (int i = l + 1; i <= r; ++i)
ans = min(ans, get(i, N - i, P, A, B));
printf("%.5lf\n", ans);
}
}
this is My RE Java
import java.util.Scanner;
public class Main {
static double g[][];
static public double get(int n, int m, int P, int A, int B) throws java.lang.Exception{
double res = n * (P / 100.0) * A;
res += g[P][m] * B;
return res;
}
public static void main(String[] args) throws java.lang.Exception{
g = new double[101][100009];
for (int p = 0; p <= 100; ++p) {
g[p][0] = 0;
for (int i = 1; i < 100009; ++i) {
g[p][i] = g[p][i - 1] + (1.0 - Math.pow(1.0 - p / 100.0, i - 1));
}
}
Scanner inScanner = new Scanner(System.in);
while (true) {
int N = inScanner.nextInt();
int P = inScanner.nextInt();
int A = inScanner.nextInt();
int B = inScanner.nextInt();
if (N == 0 && P == 0 && A == 0 && B == 0) break;
int l = 0, r = N;
while (l < r - 2) {
int ll = (l + l + r) / 3;
int rr = (r + r + l) / 3;
double tl = get(ll, N - ll, P, A, B), tr = get(rr, N - rr, P, A, B);
if (tl < tr) r = rr;
else l = ll;
}
double ans = get(l, N - l, P, A, B);
for (int i = l + 1; i <= r; ++i)
ans = Math.min(ans, get(i, N - i, P, A, B));
System.out.println(ans);
}
}
}
Can anyone change my code to AC or even TLE
Please contact me (sunnywkn@gmail.com)