QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#89669 | #5253. Denormalization | CCSU_Wine | WA | 2ms | 3540kb | C++20 | 1.0kb | 2023-03-20 21:32:33 | 2023-03-20 21:32:36 |
Judging History
answer
#include <math.h>
#include <iostream>
using namespace std;
const double eps = 1e-6;
int n, ans[15];
double a[15];
int get(double x, double p1, double p2){
return sqrt(x * p2 / p1);
}
void get_org(){
int x = ans[1] * ans[1];
for(int i = 2; i <= n; i ++){
ans[i] = get(x, a[1], a[i]);
}
}
bool sgn(double x){
if(fabs(x) <= eps) return true;
return false;
}
bool check(){
double sum = 0.0;
for(int i = 1; i <= n; i ++){
sum += (double)(ans[i] * ans[i]);
}
for(int i = 1; i <= n; i ++){
if(!sgn(a[i] - (double)(ans[i] * ans[i]) / sum)) return false;
}
return true;
}
int main(){
cin >> n;
for(int i = 1; i <= n; i ++){
cin >> a[i];
a[i] *= a[i]; // a[i]^2 代表转化后的数字占总和的比例
}
for(int i = 1; i <= 10000; i ++){ // 枚举a1
ans[1] = i;
get_org();
if(check()) break;
}
for(int i = 1; i <= n; i ++){
cout << ans[i] << "\n";
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 3500kb
input:
2 0.909840249060 0.414958698174
output:
1127 514
result:
ok good solution
Test #2:
score: 0
Accepted
time: 2ms
memory: 3500kb
input:
3 0.005731604132 0.696198848562 0.717826101486
output:
22 2672 2755
result:
ok good solution
Test #3:
score: -100
Wrong Answer
time: 2ms
memory: 3540kb
input:
10 0.338936215010 0.390914583549 0.048893426174 0.446152513833 0.137891103101 0.017985796057 0.459132554353 0.201452557127 0.362800863500 0.358493585479
output:
10000 11533 1442 13163 4068 530 13546 5943 10704 10577
result:
wrong answer Integer parameter [name=r_i] equals to 11533, violates the range [1, 10000]