QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#136061 | #5253. Denormalization | LeticiaFCS | AC ✓ | 4ms | 3824kb | C++20 | 2.1kb | 2023-08-06 22:52:41 | 2023-08-06 22:52:42 |
Judging History
answer
#include"bits/stdc++.h"
using lint = int64_t;
constexpr int MOD = int(1e9) + 7;
constexpr int INF = 0x63636363;
constexpr int NINF = 0xcfcfcfcf;
constexpr lint LINF = 0x6363636363636363;
using namespace std;
using ld = long double;
typedef double d; // for N ~ 1e7; long double for N ~ 1e9
pair<lint, lint> approximate(d x, lint N) { /// start-hash
lint LP = 0, LQ = 1, P = 1, Q = 0, inf = LLONG_MAX; d y = x;
for (;;) {
lint lim = min(P ? (N-LP) / P : inf, Q ? (N-LQ) / Q : inf),
a = (lint)floor(y), b = min(a, lim),
NP = b*P + LP, NQ = b*Q + LQ;
if (a > b) {
// If b > a/2, we have a semi-convergent that gives us a
// better approximation; if b = a/2, we *may* have one.
// Return {P, Q} here for a more canonical approximation.
return (abs(x - (d)NP / (d)NQ) < abs(x - (d)P / (d)Q)) ? make_pair(NP, NQ) : make_pair(P, Q);
}
if (abs(y = 1/(y - (d)a)) > 3*N) {
return {NP, NQ};
}
LP = P; P = NP;
LQ = Q; Q = NQ;
}
}
int main(){
cin.tie(nullptr)->sync_with_stdio(false);
int n; cin>>n;
vector<ld> v(n);
for(auto &x : v){
cin>>x;
}
ld mini = v[0], maxi = v[0];
for(auto &x : v){
mini = min(mini, x);
maxi = max(maxi, x);
}
auto [p, q] = approximate(mini / maxi, 10000);
//1 6
vector<int> ans(n);
for(int k = 1; p * k <= 10000; k++){
int x = p * k;
/*
v[i] = x / d
d = x / v[i]
*/
ld D = ld(x) / mini;
bool ok = true;
ld real_d = 0;
for(int i =0; i<n && ok; i++){
/*
v[i] = ans[i] / d
ans[i] = v[i] * d
*/
ans[i] = round(v[i] * D);
if(ans[i] > 10000) ok = false;
real_d += ans[i] * ans[i];
}
real_d = sqrt(real_d);
for(int i =0; i<n && ok; i++){
if(abs(v[i] - ld(ans[i]) / real_d) > 1e-6)
ok = false;
}
if(ok){
for(int x : ans)
cout<<x<<"\n";
return 0;
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3636kb
input:
2 0.909840249060 0.414958698174
output:
9665 4408
result:
ok good solution
Test #2:
score: 0
Accepted
time: 1ms
memory: 3776kb
input:
3 0.005731604132 0.696198848562 0.717826101486
output:
75 9110 9393
result:
ok good solution
Test #3:
score: 0
Accepted
time: 0ms
memory: 3632kb
input:
10 0.338936215010 0.390914583549 0.048893426174 0.446152513833 0.137891103101 0.017985796057 0.459132554353 0.201452557127 0.362800863500 0.358493585479
output:
5823 6716 840 7665 2369 309 7888 3461 6233 6159
result:
ok good solution
Test #4:
score: 0
Accepted
time: 1ms
memory: 3724kb
input:
100 0.027828573352 0.034289446708 0.021442608673 0.002752893865 0.091163859407 0.180717182268 0.012097751269 0.101332712254 0.087249881055 0.112643922419 0.016667180541 0.108449036530 0.050488448020 0.104216696303 0.120734059490 0.090096410766 0.066537631979 0.046668105514 0.174836851156 0.084908984...
output:
1486 1831 1145 147 4868 9650 646 5411 4659 6015 890 5791 2696 5565 6447 4811 3553 2492 9336 4534 5302 193 5082 58 1438 4729 3774 542 5876 1641 5574 1443 9374 7710 9570 1413 3054 396 2768 8066 1774 1546 9548 1546 8339 411 3862 3496 3418 8165 4760 7829 4709 8174 8816 4396 7811 8148 2957 1239 1857 4361...
result:
ok good solution
Test #5:
score: 0
Accepted
time: 4ms
memory: 3824kb
input:
10000 0.014153431495 0.006246805276 0.014846752535 0.008905976745 0.012146085543 0.003020528319 0.010107617948 0.005218062088 0.014054879627 0.009239669913 0.008637984822 0.013371932468 0.009493829995 0.005771335736 0.002264963994 0.010799210007 0.015999982294 0.014564928771 0.001206828144 0.0056243...
output:
8186 3613 8587 5151 7025 1747 5846 3018 8129 5344 4996 7734 5491 3338 1310 6246 9254 8424 698 3253 18 6747 6383 7580 1483 2171 4328 7368 2072 8229 3813 8743 9601 5375 9211 4221 6853 8470 8388 929 2604 4103 8579 2768 1138 3754 2139 7163 5876 525 8775 4406 7769 1654 3080 734 3950 4290 6828 4796 4006 4...
result:
ok good solution
Test #6:
score: 0
Accepted
time: 3ms
memory: 3640kb
input:
10000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.010000000000 0.0100000...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok good solution
Test #7:
score: 0
Accepted
time: 2ms
memory: 3676kb
input:
10000 0.000001731921 0.000003463842 0.000005195763 0.000006927684 0.000008659605 0.000010391525 0.000012123446 0.000013855367 0.000015587288 0.000017319209 0.000019051130 0.000020783051 0.000022514972 0.000024246893 0.000025978814 0.000027710735 0.000029442656 0.000031174576 0.000032906497 0.0000346...
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 ...
result:
ok good solution
Test #8:
score: 0
Accepted
time: 1ms
memory: 3604kb
input:
2 0.447213595500 0.894427191000
output:
1 2
result:
ok good solution
Test #9:
score: 0
Accepted
time: 1ms
memory: 3592kb
input:
2 0.707142137409 0.707071423196
output:
10000 9999
result:
ok good solution
Test #10:
score: 0
Accepted
time: 1ms
memory: 3628kb
input:
2 0.000100000000 0.999999995000
output:
1 10000
result:
ok good solution
Test #11:
score: 0
Accepted
time: 4ms
memory: 3640kb
input:
10000 0.000001000050 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.010000500037 0.0100005...
output:
1 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 1000...
result:
ok good solution
Test #12:
score: 0
Accepted
time: 4ms
memory: 3756kb
input:
10000 0.009999000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.010000000100 0.0100000...
output:
9999 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 1...
result:
ok good solution