30分求助
查看原帖
30分求助
1280427
Z_Z_Y楼主2024/7/13 20:55

我是赛时临时想出来的思路,把k个数看成一个有k位的二进制数,最后这个数的十进制表示+1就是答案,样例也都没问题,但为什么subtask1全错,是思路问题还是代码有细节不到位,请dalao帮忙。

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
long long n,t,k,x,a[105],ans;
int main(){
	scanf("%lld",&t);
	while(t--){
		ans=0;
		memset(a,0,sizeof a);
		scanf("%lld%lld",&n,&k);
		for(int i=1;i<=k;i++) scanf("%lld",&x),a[i]=x%2;
		for(int i=k;i;i--){
			if(a[i]) ans+=(long long)(1<<(i-1));
		}
		cout<<ans+1<<endl;
	}
	return 0;
}
2024/7/13 20:55
加载中...