code forces 400A Inna and Choose Options 题目链接:http://codeforces.com/problemset/problem/400/A
题目大意:给出一副12张的牌,牌面仅有“X”、“O”两种字母,可以将这一副牌排列成矩形,问怎么排能使其出现一整列“X”。输出种类数和具体排法。
题目分析:显然可以排成1行12列、2行6列、……12行1列。枚举都行了。
code:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k,n,a[7],b[7]={0,12,6,4,3,2,1};
char s[20];
scanf("%d",&n);
while(n--)
{
scanf("%s",s);
memset(a,0,sizeof(a));
for(i=1;i<=6;i++)
{
for(j=0;j<b[i];j++)
{
for(k=j;k<12;k+=b[i])
{
if(s[k]=='O')break;
}
if(k>=12)a[i]=1;
}
}
for(j=0,i=1;i<=6;i++)
{
j+=a[i];
}
printf("%d",j);
for(i=1;i<7;i++)
{
if(a[i])printf(" %dx%d",12/b[i],b[i]);
}
printf("\n");
}
return 0;
}
PS:还行,这题凑合……