QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#849675#9962. Diminishing Fractionsas_lyrWA 208ms7124kbC++141.2kb2025-01-09 17:15:372025-01-09 17:15:38

Judging History

你现在查看的是最新测评结果

  • [2025-01-09 17:15:38]
  • 评测
  • 测评结果:WA
  • 用时:208ms
  • 内存:7124kb
  • [2025-01-09 17:15:37]
  • 提交

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