离散数学 判断子群

判断子群

Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description

给定一个有限群S,和他的一个子集S1,定义S上的二元运算*为模M加法运算,判断该子集是否为S的子群。(子群的定义:设H为群G的非空子集。如果H在G的运算下构成群,则称H为G的子群)
Input

多组输入,第一行为有限群S的元素个数n(0<=n<100),数M(0<=M<100),其子集的元素个数m(0<=m<100)(元素可能有重复)
第二行n个数为有限群含有的元素x(0 <= x < 100),第三行m个数为子集含有的元素y(0 <= y < 100)。
输出
如果该子集是S的子群输出“YES”,反之输出“NO”(不含引号)
Output

如果该子集是S的子群输出“YES”,反之输出“NO”(不含引号)
Sample Input

8 7 7
0 1 2 3 4 5 6 6
0 1 2 3 4 5 6
10 7 7
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 9
Sample Output

YES
NO
Hint

Source

fhf-xry

/*半群满足的条件
  集合是群的子集
  封闭性
  可结合性
  存在幺元
  每个元素都有对应的逆元
  (无零元)
  */
#include 
#include 
#define INF 0x3f3f3f3f
int main()
{
    int i,j,n,m,q,flag;
    int a[101],arr[101],vis[101],num[101];
    while(scanf("%d%d%d",&n,&m,&q)!=EOF)
    {
        memset(a,0,sizeof(a));
        memset(arr,0,sizeof(arr));
        memset(vis,0,sizeof(vis));
        memset(num,-1,sizeof(num));   //num储存对应的逆元
        flag=1;
        for(i=0;i

你可能感兴趣的:(离散数学)