怎么说,这明显是一道大水题,不过我还是WA了一次,充分说明自己读题的不够仔细,特别是英文题的时候一定要看清题意
第一次做的时候没考虑到N < M时的情况
AC代码:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<limits.h>
using namespace std;
int main()
{
__int64 a[33];
a[1]= 1;
for(int i= 2; i<= 30; i++)
a[i]= a[i-1] * 2;
int T;
scanf("%d",&T);
while(T--)
{
int m,n;
scanf("%d %d",&m,&n);
int t= 0;
int sex;
int flag= 0;
__int64 ans= 0;
if(n> m)
{
for(int i= 1; i<= m; i++)
{
scanf("%d",&sex);
if(flag)
{
t++;
ans+= a[t];
}
else if(sex)
flag= 1;
}
for(int i= m + 1; i<= n; i++)
{
scanf("%d",&sex);
t++;
ans+= a[t];
}
}
else
{
for(int i=1; i<= n; i++)
{
scanf("%d",&sex);
if(flag)
{
t++;
ans+= a[t];
}
else if(sex)
flag= 1;
}
}
printf("%I64d",ans);
if(!ans)
printf(" RMB\n");
else
printf("0000 RMB\n");
}
return 0;
}