codeforces 400A. Inna and Choose Options(题目不难,但是得读懂题目让干什么)

2023-11-08 11:48

本文主要是介绍codeforces 400A. Inna and Choose Options(题目不难,但是得读懂题目让干什么),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、http://codeforces.com/problemset/problem/400/A

2、题目大意:

给出12张牌,这12张牌只有两种字符‘X','O',有a*b=12,将这12张牌组成a*b的矩阵,其中前b张作为第一行,再后边的b张作为第二行,依次继续,例如abcdefghijkl,划分成3*4的就是这样子的

abcd

efgh

ijkl

如果有某一列全部是’X',那么就输出这样的a和b

3、题目:

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 sizea × b from the cards he put on the table as follows: the firstb cards form the first row of the table, the secondb cards form the second row of the table and so on, the lastb 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 numbersa and b to choose. Help her win the game: print to her all the possible ways of numbersa, 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 thet tests on a separate line.

The description of each test is a string consisting of 12 characters, each character is either "X", or "O". Thei-th character of the string shows the character that is written on thei-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 paira, b. Next, print on this line the pairs in the formataxb. 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

4、AC代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[15];
struct node
{int x;int y;
} a[15];
int k=0;
int main()
{int t;scanf("%d",&t);while(t--){int sum=0;k=0;scanf("%s",s);int flag=0;for(int i=0; i<12; i++){if(s[i]=='X'){flag=1;break;}}if(flag==0){printf("0\n");continue;}else{sum++;a[k].x=1;a[k].y=12;k++;}for(int i=0; i<6; i++){if(s[i]=='X' && s[i+6]=='X'){sum++;a[k].x=2;a[k].y=6;k++;break;}}for(int i=0; i<4; i++){if(s[i]=='X' && s[i+4]=='X' && s[i+8]=='X'){sum++;a[k].x=3;a[k].y=4;k++;break;}}for(int i=0; i<3; i++){if(s[i]=='X' && s[i+3]=='X' && s[i+6]=='X' && s[i+9]=='X'){sum++;a[k].x=4;a[k].y=3;k++;break;}}for(int i=0; i<2; i++){if(s[i]=='X' && s[i+2]=='X' && s[i+4]=='X' && s[i+6]=='X' && s[i+8]=='X' && s[i+10]=='X' ){sum++;a[k].x=6;a[k].y=2;k++;break;}}flag=0;for(int i=0; i<=11; i++){if(s[i]=='O'){flag=1;break;}}if(flag==0){sum++;a[k].x=12;a[k].y=1;k++;}printf("%d",sum);for(int i=0; i<k; i++){printf(" %dx%d",a[i].x,a[i].y);}printf("\n");}return 0;
}


 

这篇关于codeforces 400A. Inna and Choose Options(题目不难,但是得读懂题目让干什么)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369644

相关文章

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

Codeforces Round #261 (Div. 2)小记

A  XX注意最后输出满足条件,我也不知道为什么写的这么长。 #define X first#define Y secondvector<pair<int , int> > a ;int can(pair<int , int> c){return -1000 <= c.X && c.X <= 1000&& -1000 <= c.Y && c.Y <= 1000 ;}int m

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

Codeforces 482B 线段树

求是否存在这样的n个数; m次操作,每次操作就是三个数 l ,r,val          a[l] & a[l+1] &......&a[r] = val 就是区间l---r上的与的值为val 。 也就是意味着区间[L , R] 每个数要执行 | val 操作  最后判断  a[l] & a[l+1] &......&a[r] 是否= val import ja

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

Linux 云计算底层技术之一文读懂 Qemu 架构

Qemu 架构概览 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。 正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成