QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#849675 | #9962. Diminishing Fractions | as_lyr | WA | 208ms | 7124kb | C++14 | 1.2kb | 2025-01-09 17:15:37 | 2025-01-09 17:15:38 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N=51000;
int n=5e4,q;
int ask[N];
vector <int> v[N];
vector <pair<int,int>> e[N];
int a[N],b[N],c[N];
int t,p[N];
int val[N];
bool o[N];
int main(){
scanf("%d",&q);
for(int i=1;i<=q;i++){
scanf("%d",&ask[i]);
v[ask[i]].push_back(i);
}
for(int i=2;i<=n;i++){
if(a[i]==0){
a[i]=b[i]=i;
p[++t]=i;
}
if(b[i]){
c[b[i]]=i;
val[b[i]]=1;
for(int j=1;j<i;j++)
if(a[j]==j){
val[j]=1ll*i%c[j];
val[b[i]]=1ll*c[j]%i;
}
}
for(int id:v[i])
for(int j=1;j<=i;j++)
if(a[j]==j)
e[id].push_back(make_pair(val[j],c[j]));
for(int j=1;j<=t&&i*p[j]<=n;j++){
a[i*p[j]]=p[j];
b[i*p[j]]=b[i]==p[j]?b[i]:0;
if(a[i]==p[j])
break;
}
}
for(int i=1;i<=q;i++){
int x=ask[i];
if(x==1){
printf("1/1\n");
continue;
}
for(int j=1;j<=x;j++)
o[j]=0;
double sum=0;
bool ok=0;
for(auto pr:e[i]){
if(ok)
putchar('+');
printf("%d/%d",pr.first,pr.second);
sum+=1.0*pr.first/pr.second;
ok=1;
o[pr.second]=1;
}
int y=(int)floor(sum+0.5);
for(int j=1;y&&j<=x;j++){
if(o[j])
continue;
y--;
printf("-%d/%d",j,j);
}
puts("");
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 208ms
memory: 7124kb
input:
2 3 6
output:
1/2+2/3-1/1 1/4+2/3+3/5-1/1-2/2
result:
wrong answer Sums do not match for modulus 8809877585262195773