不知道为什么,我csp考试的时候交的满分答案下载下来之后,在练习系统里交是零分???我不理解。
第二题 坐标变换其二(Java组)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static int n, m;
static final int N = 100010;
static int[] op = new int[N];
static double[] jiaobianhuan = new double[N];
static double[] kbianhuan = new double[N];
static double[] op(int x, int y, int i1, int j1) {
double[] res = new double[]{(double) x, (double) y};
double delta_theta = jiaobianhuan[j1] - jiaobianhuan[i1 - 1];
double delta_k = kbianhuan[j1] / kbianhuan[i1 - 1];
double a = res[0], b = res[1];
res[0] = a * Math.cos(delta_theta) - b * Math.sin(delta_theta);
res[1] = a * Math.sin(delta_theta) + b * Math.cos(delta_theta);
res[0] *= delta_k;
res[1] *= delta_k;
return res;
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] first_line = br.readLine().split(" ");
n = Integer.parseInt(first_line[0]);
m = Integer.parseInt(first_line[1]);
for (int i = 1; i <= n; i++) {
String[] second_line = br.readLine().split(" ");
op[i] = Integer.parseInt(second_line[0]);
double val = Double.parseDouble(second_line[1]);
if (op[i] == 1) {
kbianhuan[i] = val;
jiaobianhuan[i] = 0.0;
} else {
kbianhuan[i] = 1.0;
jiaobianhuan[i] = val;
}
}
kbianhuan[0] = 1.0;
for (int i = 1; i <= n; i++) {
kbianhuan[i] *= kbianhuan[i - 1];
jiaobianhuan[i] += jiaobianhuan[i - 1];
}
for (int i = 1; i <= m; i++) {
int i1, j1, x, y;
String[] third_line = br.readLine().split(" ");
i1 = Integer.parseInt(third_line[0]);
j1 = Integer.parseInt(third_line[1]);
x = Integer.parseInt(third_line[2]);
y = Integer.parseInt(third_line[3]);
double[] res = op(x, y, i1, j1);
bw.write(String.format("%.3f %.3f\n", res[0], res[1]));
}
bw.flush();
}
}
我也是这样
就离谱