{
int i,tmp;
if (s=="n")
{
for (i=11;i>=1;i--)
a[i]=a[i-1];
a[0]=0;
}
else
{
tmp=0;
for (i=0;i
for (i=0;i<12;i++)
a[i]*=tmp;
}
return *this;
}
friend ostream& operator<< (ostream& os,const num& b)
{
int i;
bool ff=false;
for (i=11;i>1;i--)
if (b.a[i]!=0)
{
if (ff) os << "+";
else ff=true;
if (b.a[i]>1)
os << b.a[i] << "*n^" << i;
else
os << "n^" << i;
}
if (b.a[1]>0)
{
if (ff) os << "+";
else ff=true;
if (b.a[1]==1) os << "n";
else os << b.a[1] << "*n";
}
if (b.a[0]>0)
{
if (ff) os << "+";
else ff=true;
os << b.a[0];
}
if (!ff) os << 0;
return os;
}
};
num work(int dep)
{
string order,s;
num ans;
cin >> order;
while (order!="END")
{
if (order=="LOOP")
{
cin >> s;
ans=ans+work(dep+1)*s;
}
else if (order=="OP")
{
cin >> s;
ans=ans+s;
}
cin >> order;
}
return ans;
}
int main()
{
int i,cc;
string s;
freopen("in.txt","r",stdin);
cin >> cc;
for (i=1;i<=cc;i++)
{
cout << "Program #" << i << endl;
cin >> s;
cout << "Runtime = " << work(0) << endl;
if (i
}
1027代码:
[cpp]
#include
#include
#include
#include
using namespace std;
const int N=10,M=15;
const int dx[4]={1,0,-1,0};
const int dy[4]={0,1,0,-1};
int tot,rem,sum;
int ans[100][4];
int a[N+2][M+2];
int fill(int x,int y,bool v[][M+1])
{
int ans=1;
v[x][y]=true;
for (int i=0;i<4;i++)
if (!v[x+dx[i]][y+dy[i]] && a[x+dx[i]][y+dy[i]]==a[x][y])
ans+=fill(x+dx[i],y+dy[i],v);
return ans;
}
void clear(int x,int y)
{
int col=a[x][y];
a[x][y]=0;
for (int i=0;i<4;i++)
if (a[x+dx[i]][y+dy[i]]==col)
clear(x+dx[i],y+dy[i]);
}
void update()
{
int i,j,k,p;
for (j=1;j<=M;j++)
for (i=1;i<=N;i++)
if (a[i][j]==0)
{
k=i;
while (k<=N && a[k][j]==0) k++;
for (p=k;p<=N;p++)
{
a[p-k+i][j]=a[p][j];
a[p][j]=0;
}
}
for (j=1;j<=M;j++)
if (a[1][j]==0)
{
k=j;
while (k<=M && a[1][k]==0) k++;
for (p=k;p<=M;p++)
for (i=1;i<=N;i++)
{
a[i][p-k+j]=a[i][p];
a[i][p]=0;
}
}
}
void work()
{
bool v[N+1][M+1];
int ss,x,y,rr,i,j;
while (1)
{
memset(v,0,sizeof(v));
ss=x=y=rr=0;
for (j=1;j<=M;j++)
for (i=1;i<=N;i++)
if (a[i][j]>0 && !v[i][j])
{
int tmp=fill(i,j,v);
if (tmp>ss) ss=tmp,x=i,y=j;
rr+=tmp;
}
if (ss<=1)
{
rem=rr;
if (rem==0) sum+=1000;
break;
}
sum+=(ss-2)*(ss-2);
ans[++tot][0]=x;ans[tot][1]=y;
ans[tot][2]=ss;
switch(a[x][y])
{
case 1:ans[tot][3]='R';break;
case 2:ans[tot][3]='G';break;
case 3:an