教訓:自己預處理位運算的一些東西,1之類的要加上 LL,否則會出問題
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
#include <vector>
using namespace std;
#define LL long long
const LL maxn = 100;
LL n;
LL er[1000];
LL num[maxn];
void init()
{
scanf("%lld", &n);
for (int i = 0; i != n; ++ i) er[i] = (1LL << (n - i - 1LL)) - 1LL;
getchar();//讀回車
for (int i = 0; i != n; ++ i)
{
num[i] = 0;
for (int j = 0; j != n; ++ j)
{
char tmp;
tmp = getchar();
num[i] = (num[i]<<1LL) + (LL)(tmp-'0');
}
getchar();//讀回車
}
}
void doit()
{
LL ans = 0;
for (int i = 0; i != n; ++ i)
{
for (int j = i; j != n; ++ j)
{
if ((num[j] & er[i]) == 0)
{
for (int k = j - 1; k >= i; -- k)
{
++ans;
swap(num[k],num[k+1]);
}
break;
}
}
}
printf("%lld\n",ans);
}
int main()
{
freopen("a.in","r",stdin);
freopen("a.txt","w",stdout);
LL sb;
scanf("%lld", &sb);
for (int i = 1; i <= sb; ++ i)
{
printf("Case #%d: ", i);
init();
doit();
}
return 0;
}