📄 1799103_ac_31ms_40k.c
字号:
# include <stdio.h>
# include <ctype.h>
# include <string.h>
# include <math.h>
# include <stdlib.h>
char str[2000],str1[2000];
int N,a[26],b[26];
int run(char *s)
{
int i,j,l,value,mark;
char t[200];
for(i = 0; s[i] != '\0'; i++)
if(islower(s[i]))
s[i] = b[s[i] - 'a'] + 48;
strcpy(t,"(");
strcat(s,")");
strcat(t,s);
strcpy(s,t);
while(1)
{mark = 1;
for(i = 0;i < strlen(s); i++)
if(s[i] == ')')
{
for(j = i; j >=0; j--)
if(s[j] == '(')
break;
for(l = i - 1; l > j; l--)
if(s[l] == '~')
{s[l] = !((int)s[l+1] - 48) + 48;strcpy(&s[l+1],&s[l+2]);i--;}
for(l = i - 1; l > j; l--)
if(s[l] == '&')
{s[l-1] = ((int)s[l-1] - 48 && (int)s[l+1] - 48) + 48;strcpy(&s[l],&s[l+2]);i-=2;}
for(l = i - 1; l > j; l--)
if(s[l] == '^')
{if(s[l-1] == s[l+1])
s[l-1] = 48;
else s[l-1] = 49;
strcpy(&s[l],&s[l+2]);i-=2;}
for(l = i - 1; l > j; l--)
if(s[l] == '|')
{s[l-1] = ((int)s[l-1] - 48 || (int)s[l+1] - 48) + 48;strcpy(&s[l],&s[l+2]);i-=2;}
if(i == j + 2)
{
strcpy(&s[i],&s[i+1]);
strcpy(&s[j],&s[j+1]);
}
}
for(j=0;j<strlen(s);j++)
if(s[j]=='('||s[j]==')')
{mark = 0;break;}
if(mark)break;
}
value = (int)s[0] - 48;
return value;
}
main()
{
int i,j,n,l,num,mark;
char tmp1[200],tmp2[200];
scanf("%d\r",&n);
for(i = 0; i < n; i++)
{
N = num = mark = 0;
printf("Data set %d: ",i+1);
gets(str);
for(j = 0; str[j] != '\0'; j++)
if(str[j] == ' ')
{strcpy(&str[j],&str[j+1]);j--;}
for(j = 0; str[j] != '\0'; j++)
{
if(islower(str[j]))
{
a[str[j]-'a'] = 1;
if(str[j+1] == ')') while(str[j+1] == ')')j++;
if(str[j+1] == '~' || str[j+1] == '(') {strcpy(str1,&str[j+1]);str[j+1] = '\0';break;}
if(islower(str[j+1]))
{strcpy(str1,&str[j+1]);str[j+1] = '\0';break;}
}
}
for(j = 0; j < 26; j++)
if(a[j]) num++;
for(N = 0;N< pow(2,num) ;N++)
{
l = 0;
for(j = 0; j < 26; j++)
if(a[j])
if(N & (int)pow(2,l++))b[j] = 1;
else b[j] = 0;
strcpy(tmp1,str);
strcpy(tmp2,str1);
if(run(tmp1) != run(tmp2))
{mark = 1;printf("Different\n");break;}
}
if(!mark) printf("Equivalent\n");
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -