A. Inna and Choose Options
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

There always is something to choose from! And now, instead of "Noughts and Crosses", Inna choose a very unusual upgrade of this game. The rules of the game are given below:

There is one person playing the game. Before the beginning of the game he puts 12 cards in a row on the table. Each card contains a character: "X" or "O".
Then the player chooses two positive integers a and b (a·b = 12),
after that he makes a table of size a × b from the cards he put on the table as follows: the first b cards
form the first row of the table, the second b cards form the second row of the table and so on, the last b cards
form the last (number a) row of the table. The player wins if some column of the table contain characters "X"
on all cards. Otherwise, the player loses.

Inna has already put 12 cards on the table in a row. But unfortunately, she doesn't know what numbers a and b to
choose. Help her win the game: print to her all the possible ways of numbers a, b that she can choose and win.

Input

The first line of the input contains integer t (1 ≤ t ≤ 100).
This value shows the number of sets of test data in the input. Next follows the description of each of the t tests on a separate line.

The description of each test is a string consisting of 12 characters, each character is either "X", or "O".
The i-th character of the string shows the character that is written on the i-th
card from the start.

Output

For each test, print the answer to the test on a single line. The first number in the line must represent the number of distinct ways to choose the pair a, b.
Next, print on this line the pairs in the format axb.
Print the pairs in the order of increasing first parameter (a). Separate the pairs in the line by whitespaces.

Sample test(s)
input
4
OXXXOXOOXOOX
OXOXOXOXOXOX
XXXXXXXXXXXX
OOOOOOOOOOOO
output
3 1x12 2x6 4x3
4 1x12 2x6 3x4 6x2
6 1x12 2x6 3x4 4x3 6x2 12x1
0

题目大意:将12张卡片排成12*1 或2*6  3*4  4*3  6*2  12*1的矩形  要求至少有一列全为X

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,i,j,k,b[6];
char a[105];
while(cin>>n)
{
while(n--)
{
int y=0,e=0,s=0,si=0,se=0,l=0;
memset(b,0,sizeof b);
cin>>a;
for(i=0;i<12;i++)
{
if(a[i]=='X')
b[0]=1;
if(a[i]=='X'&&a[i+6]=='X')
b[1]=1;
if(a[i]=='X'&&a[i+4]=='X'&&a[i+8]=='X')
b[2]=1;
if(a[i]=='X'&&a[i+3]=='X'&&a[i+6]=='X'&&a[i+9]=='X')
b[3]=1;
if(a[i]=='X'&&a[i+2]=='X'&&a[i+4]=='X'&&a[i+6]=='X'&&a[i+8]=='X'&&a[i+10]=='X')
b[4]=1;
}
int sum=0;
for(i=0;i<12;i++)
if(a[i]=='X')
sum++;
if(sum==12)
b[5]=1;
int cas=0;
for(i=0;i<6;i++)
if(b[i])
cas++;
if(b[0])
{ cout<<cas<<" "<<"1x12";
if(b[1])
cout<<" "<<"2x6";
if(b[2])
cout<<" "<<"3x4";
if(b[3])
cout<<" "<<"4x3";
if(b[4])
cout<<" "<<"6x2";
if(b[5])
cout<<" "<<"12x1";
cout<<endl; }
else
cout<<"0"<<endl; }
} return 0;
}

最新文章

  1. Sybase 出错解决步骤
  2. Spark External Datasets
  3. jQuery实现鼠标拖动改变Div高度
  4. ISAPI_Rewrite中文手册
  5. 深入了解Hibernate的缓存使用
  6. CC2540开发板学习笔记(六)&mdash;&mdash;AD控制(自带温度计)
  7. 3-5 RPM包校验
  8. run.do 文件编写说明
  9. thinkphp利用行为扩展实现监听器
  10. win8 企业版 安装 .net2.0 .net 3.5
  11. VMware配置回环地址用于测试
  12. PhoneGap and Titanium
  13. 拓扑排序(TopologicalSort)算法
  14. Gradle入门系列(转)
  15. QQ高仿版
  16. BootStrap教程完整版
  17. 推荐一款不错的反编译软件:Reflector
  18. join on用法
  19. 【转】Windons+jenkins,构建java程序,提示C:\Windows\TEMP\jenkins5037773887088486383.bat Access is denied
  20. iptables防护CC和DDos和PPTP穿透脚本

热门文章

  1. Find a way--hdoj
  2. PHP检测输入数据是否合法常用的类(转)
  3. x64汇编第三讲,64位调用约定与函数传参.
  4. Android网络编程随想录(3)
  5. innerHTML的用法
  6. (转)一个vue路由参数传递的注意点
  7. Spark的协同过滤.Vs.Hadoop MR
  8. 生物信息之ME, HMM, MEMM, CRF
  9. 搜索关键词和类目url简短化
  10. javaee的toString的用法