#include <stdio.h>
#include <string.h>
#define INI 0
#define NUM 1
#define OPT 2
#define WRN -1
#define N 1024
int table[4][130];
char s[N];
int n;
void init()
{
int state,ch;
memset(table,0xff,sizeof(table));
for(ch='0';ch<='9';ch++) table[INI][ch]=table[NUM][ch]=table[OPT][ch]=NUM;
table[INI]['+']=OPT;
table[INI]['-']=OPT;
table[NUM]['+']=OPT;
table[NUM]['-']=OPT;
table[NUM]['*']=OPT;
table[NUM]['/']=OPT;
}
int dfa(int a,int b)
{
int i,j,state=INI;
if(a>b) return WRN;
for(i=a;i<=b;i++)
{
if(s[i]==' ' || s[i]=='\t') continue;
if(s[i]=='(')
{
if(state==NUM) return WRN;
int cnt=1;
for(j=i+1;j<=b;j++)
{
if(s[j]=='(') cnt++;
else if(s[j]==')') cnt--;
if(cnt==0) break;
}
if(cnt || dfa(i+1,j-1)!=NUM) return WRN;
state=NUM;
i=j;
}
else state=table[state][s[i]];
if(state==WRN) return WRN;
}
if(state==NUM) return NUM;
return WRN;
}
int main()
{
init();
while(gets(s))
{
n=strlen(s);
if(n==0) puts("");
else printf("%s\n",dfa(0,n-1)==NUM?"Yes":"No");
}
return 0;
}
#include <stdio.h>
#define MAX (100 + 10)
char szData[MAX];
void TrimSpace(char* pszData)
{
char* pszRead = pszData;
char* pszWrite = pszData;
while (*pszRead)
{
if (*pszRead != ' ' && *pszRead != '\t')
{
*pszWrite++ = *pszRead;
}
++pszRead;
}
*pszWrite = '\0';
}
double Cal(char*& pszData, int nKind)
{
double fAns = 0.0;
while (*pszData && *pszData != ')')
{
if (*pszData >= '0' && *pszData <= '9')
{
fAns = 10 * fAns + *pszData - '0';
++pszData;
}
else if (*pszData == '+')
{
if (nKind >= 1)
{
return fAns;
}
++pszData;
fAns += Cal(pszData, 1);
}
else if (*pszData == '-')
{
if (nKind >= 1)
{
return fAns;
}
++pszData;
fAns -= Cal(pszData, 1);
}
else if (*pszData == '*')
{
if (nKind >= 2)
{
return fAns;
}
++pszData;
fAns *= Cal(pszData, 2);
}
else if (*pszData == '/')
{
if (nKind >= 2)
{
return fAns;
}
++pszData;
fAns /= Cal(pszData, 2);
}
else if (*pszData == '(')
{
++pszData;
fAns = Cal(pszData, 0);
++pszData;
return fAns;
}
}
return fAns;
}
int main()
{
while (gets(szData))
{
TrimSpace(szData);
char* pszData = szData;
printf("%.4f\n", Cal(pszData, 0));
}
}
#include <stdio.h>
#include <string.h>
#define MAX(a,b) ((a)>(b)?(a):(b))
#define N 501
int n,m,g[N][N],d[N],path[N],top;
void dfs(int u)
{
int v;
for(v=1;v<=n;v++)
{
if(g[u][v])
{
g[u][v]--;
g[v][u]--;
dfs(v);
}
}
path[top++]=u;
}
int main()
{
int i,a,b,start;
while(~scanf("%d",&m))
{
memset(g,0,sizeof(g));
memset(d,0,sizeof(d));
n=0;
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
g[a][b]++;
g[b][a]++;
d[a]++;
d[b]++;
n=MAX(n,MAX(a,b));
}
for(start=1;d[start]==0 && start<=n;start++);
for(i=start;(d[i]&1)==0 && i<=n;i++);
if(i<=n) start=i;
top=0;
dfs(start);
for(i=top-1;i>=0;i--) printf("%d\n",path[i]);
}
return 0;
}