您的位置:首页 > 其它

poj 2295 A DP Problem

2011-10-21 11:51 316 查看
有点繁杂的一道题,不过还是耐心的A了它,真开心~~

注意输出,题目要求不大于最大整数,也是就说如果是3.5,输出3,如果是-3.5,输出-4.

#include <stdio.h>
#include <math.h>

int main()
{
int T,a,X,Y,flag;
char s[300],*p,*q;
scanf("%d",&T);
while (T--)
{
scanf("%s",s);
q=p=s;
X=Y=0;
flag=1;
while (flag)//‘=’前部分
{
a=0;
if (*p>='0'&&*p<='9')
{
q=p;
while (*p>='0'&&*p<='9')
{
a*=10;
a+=*p-'0';
p++;
}
if(*p=='=')flag=0;
}
if(*p=='x')//如果是x的系数
{
if (q==s||*(q-1)=='+')//如果系数是正
X+=a;
else X-=a;
}
else
{
if(q==s||*(q-1)=='+')
Y+=a;
else Y-=a;
}
p++;
if(*p=='=')flag=0;
}
if(*p!='=')p--;
while (*p++)//‘=’后部分
{
a=0;
if (*p>='0'&&*p<='9')
{
q=p;
while (*p>='0'&&*p<='9')
{
a*=10;
a+=*p-'0';
p++;
}
}
if (*p=='x')//如果是x的系数
{
if(*(q-1)=='='||*(q-1)=='+')//如果系数是正
X-=a;
else X+=a;
}
else
{
if(*(q-1)=='='||*(q-1)=='+')
Y-=a;
else Y+=a;
}
}
p=s;
while (*p!='=')
{
if(*p=='x')
{
if(p==s)X+=1;
else if(*(p-1)=='+')X+=1;
else if(*(p-1)=='-')X-=1;
}
p++;
}
while (*p++)
{
if(*p=='x')
{
if(*(p-1)=='=')X-=1;
else if(*(p-1)=='+')X-=1;
else if(*(p-1)=='-')X+=1;
}
}
if(X==0&&Y==0)
{
printf("IDENTITY\n");
}
else if(X==0&&Y!=0)
{
printf("IMPOSSIBLE\n");
}
else
{
printf("%d\n",(int)floor(Y*1.0/-X));
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: