当时写的有些麻烦
其实只要记录1的个数就好了
#include<stdio.h>
#include<string.h>
#include<math.h>
int Rt(int a[],int N) {
int i;
for(i=0; N>=2; i++) {
a[i]=N%2;
N=N/2;
}
a[i]=N;
return i;
}
int main() {
int T,n,l,r;
int i,j,k;
int a[22];
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
r=0;
for(i=pow(2,n-1),j=0; i<pow(2,n); i++) {
l=Rt(a,i);
for(k=0; k<=l; k++) {
if(a[k]==1)
r++;
}
memset(a,0,sizeof(a));
}
printf("%d\n",r);
}
return 0;
}
题目地址:【杭电】[2502]月之数