QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#879670#9980. Boolean Function Reconstructionas_lyrWA 0ms3840kbC++14869b2025-02-02 10:24:532025-02-02 10:24:53

Judging History

This is the latest submission verdict.

  • [2025-02-02 10:24:53]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3840kb
  • [2025-02-02 10:24:53]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
const int N=16;
int n;
char s[1<<N];
bool o[1<<N];
int f[1<<N];
void solve(){
	scanf("%d",&n);
	scanf("%s",s);
	for(int i=0;i<(1<<n);i++)
		o[i]=s[i]-'0';
	for(int i=0;i<(1<<n);i++)
		f[i]=o[i];
	for(int p=0;p<n;p++)
		for(int i=0;i<(1<<n);i++)
			if(i&(1<<p))
				f[i]+=f[i^(1<<p)];
	for(int i=0;i<(1<<n);i++)
		if(f[i]&&o[i]==0){
			puts("No");
			return ;
		}
	puts("Yes");
	for(int i=0;i<(1<<n);i++)
		o[i]=f[i]==1;
	bool a[2]={0,0};
	for(int i=0;i<(1<<n);i++){
		if(o[i]==0)
			continue;
		if(a[0])
			putchar('|');
		a[0]=1,a[1]=0;
		putchar('(');
		for(int p=0;p<n;p++)
			if(i&(1<<p)){
				if(a[1])
					putchar('&');
				a[1]=1;
				putchar(p+'a');
			}
		putchar(')');
	}
	putchar('\n');
}
int main(){
	int T;
	scanf("%d",&T);
	while(T--)
		solve();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3840kb

input:

7
2
0001
2
0111
2
1111
3
00010111
1
10
2
0101
5
00000000000000000000000000000001

output:

Yes
(a&b)
Yes
(a)|(b)
Yes
()
Yes
(a&b)|(a&c)|(b&c)
No
Yes
(a)
Yes
(a&b&c&d&e)

result:

wrong answer invalid expressions 8 (test case 2)