公共因子

Time Limit: 1000MS Memory limit: 65536K

题目描述

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1465

   假设字符串也有因数,一个字符串为s1,然后可以由n个字符串s2来表示,则称s2是s1的因数。
   如“ac”是“acac”的因数。
    给两个字符串,求它们的公因数有多少个。

输入

 多组数据,给定两个字符串,s1,s2。长度不超过100000,并且不含空格。

 

输出

 每组数据一行,公因数有多少个。

 

示例输入

acac
ac
aaa
aa

示例输出

1
1

提示

解题思路:暴力搜索方法解题,公共因子长度一定是第一个字符串的整数倍,第一次剪枝找出所有可能(注意是“可能”)满足第一个字符串条件的因子的长度,保存在数组f1中;第二次剪枝遍历f1数组,找出所有满足第一个字符串的因子,记录它们的长度,保存在数组g1中;遍历g1数组,找出所有满足第二个字符串的公共因子的因子,用count记录所有满足条件因子的个数,count就是最后的结果,经过三次剪枝,最终可以得到答案。

代码:

 #include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
char f[],g[];
while(scanf("%s%s",f,g)!=EOF)
{
int lenf=strlen(f),leng=strlen(g);
int f1[]={},g1[]={},t=-,s=-;
int i,j,k;
for(i=;i<=lenf;i++)
if(lenf%i==)f1[++t]=i;
int flag;
for(i=;i<=t-;i++)
{
char zhong[];
for(j=;j<=f1[i]-;j++)
zhong[j]=f[j];
for(j=f1[i];f[j]!='\0';j+=f1[i])
{
flag=;
for(k=;k<=f1[i]-;k++)
if(f[j+k]!=zhong[k])
{
flag=;
break;
}
if(flag==)break;
}
if(j==lenf)g1[++s]=f1[i];
}
g1[++s]=lenf;
int count=;
for(i=;i<=s;i++)
{
if(leng%g1[i]==)
{
for(j=;g[j]!='\0';j+=g1[i])
{
flag=;
for(k=;k<=g1[i]-;k++)
{
if(g[k+j]!=f[k])
{
flag=;
break;
}
}
if(flag==)break;
}
if(j==leng)count++;
}
}
cout<<count<<endl;
}
return ;
}

sdut 1465 公共因子的更多相关文章

  1. 【叉积】【sdut 2508 图形密码】

    图形密码 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  2. sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】

    转置矩阵 Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sdutoj/proble ...

  3. sdut 2125串结构练习--字符串匹配【两种KMP算法】

    串结构练习——字符串匹配 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目链接:http://acm.sdut.edu.cn/sduto ...

  4. sdut 2498【aoe 网上的关键路径】

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2498 代码超时怎么破: #include< ...

  5. sdut 487-3279【哈希查找,sscanf ,map】

    487-3279 Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接: sdut:   http://acm.sdut.ed ...

  6. 排队打饭 sdut 2443【最简单的贪心法应用举例】

    排队打饭 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  7. sdut 2445 小学数学

    小学数学 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  8. 最终排名 sdut 2446

    最终排名 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  9. sdut 2441 屠夫与狼

    屠夫和狼 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

随机推荐

  1. jQuery插件-表单验证插件-Validation

    1.Validation简介 标准的验证方法库 1)内置验证规则:必填,数字,E-Mail,URL和信用卡号码等19类内置验证规则. 2)自定义验证规则:自定义 3)验证信息提示:默认了验证信息提示, ...

  2. 一次Android脱壳training

    一.查壳 jeb载入发现没有代码,怀疑加壳 用查壳工具查壳 (爱加密) apktool解包 得到其 package name: loading.androidmanual main activity ...

  3. UINavigationItem UINavigationBar 关系分析

    目录 1.关系分析 2.关系综述 3.概念点 4.疑问 1.关系分析 UIBarItem-> UIBarButtonItem -> UINavigationItem 1.1 UIBarIt ...

  4. 【leetcode】Word Search

    Word Search Given a 2D board and a word, find if the word exists in the grid. The word can be constr ...

  5. poj 1035

    http://poj.org/problem?id=1035 poj的一道字符串的水题,不难,但就是细节问题我也wa了几次 题意就是给你一个字典,再给你一些字符,首先如果字典中有这个字符串,则直接输出 ...

  6. linux shell脚本通过参数名传递参数值

    平常在写shell脚本都是用$1,$2....这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护.Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚 ...

  7. java web 学习 --第四天(Java三级考试)

    第三天的学习内容:http://www.cnblogs.com/tobecrazy/p/3453041.html jsp内置对象 out out 属性类型:JspWriter 作用域:page 作用: ...

  8. Innodb 表空间卸载、迁移、装载

    从MySQL的Innodb特性中我们知道,Inndob的表空间有共享和独享的特点,如果是共享的.则默认会把表空间存放在一个文件中(ibdata1),当开启独享表空间参数Innodb_file_per_ ...

  9. Java for LeetCode 233 Number of Digit One

    Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...

  10. CentOS 7 关闭图形界面

    CentOS 7 关闭图形界面 查看/etc/inittab如下: # systemd uses 'targets' instead of runlevels. # by default, there ...