spoj 11575. A Famous Equation

https://www.spoj.pl/problems/EQ2/
我的做法在这个网站上能过,但是过不了杭电的,郁闷了很久。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[100],b[100],c[100];
char str[105];
int aa,bb,cc;
long long suma,sumb,sumc;
long long f[105][2];
int main()
{
int i,j,k,t,cas=0,ss,tt;
while(scanf("%s",str)!=EOF)
{
cas++;
int len = strlen(str);
aa=1;bb=1;cc=1;k=0;
memset(f,0,sizeof(f));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
suma=0,sumb=0,sumc=0;
int ttt=0;
for(i=len-1;i>=0;i--)
{
if(str[i]=='=')break;
if(str[i]=='?')ttt=1,c[cc++]=-1;
else
c[cc++]=str[i]-'0';
}i--;k=max(k,cc);
for(;i>=0;i--)
{
if(str[i]=='+')break;
if(str[i]=='?')ttt=1,b[bb++]=-1;
else
b[bb++]=str[i]-'0';
}i--;k=max(k,bb);
for(;i>=0;i--)
{
if(str[i]=='?')ttt=1,a[aa++]=-1;
else
a[aa++]=str[i]-'0';
}
k=max(k,aa);
int sa,ea,sb,eb,sc,ec;
int flag=0,state=0;
for(int l=1;l<k;l++)
{
if(state)break;
sa=a[l]<0?((l<aa-1||aa==2)?0:1):a[l];
ea=a[l]<0?9:a[l];
sb=b[l]<0?((l<bb-1||bb==2)?0:1):b[l];
eb=b[l]<0?9:b[l];
sc=c[l]<0?((l<cc-1||cc==2)?0:1):c[l];
ec=c[l]<0?9:c[l];
if(flag==0)
{
ss=f[l][0],tt=f[l][1];
for(i=sa;i<=ea;i++)
{
for(j=sb;j<=eb;j++)
{
for(t=sc;t<=ec;t++)
{
if(i+j==10+t&&f[l-1][1]==0)
f[l][1]++;
if(i+j==t&&f[l-1][1]==0)
f[l][0]++;
if(f[l-1][1]&&i+j+1==10+t)
f[l][1]++;
if(f[l-1][1]&&i+j+1==t)
f[l][0]++;
if(f[l][0]>ss)flag=1;
if(f[l][1]>tt)flag=1;
}
}
}
if(ss==f[l][0]&&tt==f[l][1])
{
state=1;break;
}
continue;
}
ss=f[l][0],tt=f[l][1];
for(i=sa;i<=ea;i++)
{
for(j=sb;j<=eb;j++)
{
for(t=sc;t<=ec;t++)
{
if(i+j==10+t)
f[l][1]+=(f[l-1][0]);
if(i+j==9+t)
f[l][1]+=(f[l-1][1]);
if(i+j==t)
f[l][0]+=(f[l-1][0]);
if(i+j+1==t)
f[l][0]+=(f[l-1][1]);
}
}
}
if(ss==f[l][0]&&tt==f[l][1])
{
state=1;break;
}
}
if(state)
printf("Case %d: 0\n",cas);
else
printf("Case %d: %lld\n",cas,f[k-1][0]);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值