一个比较有趣的字符串问题,问题描述如下

大体意思就是给定一个字符串s以及一个整数m,找出一个能满足以上三个条件的字符串t的个数对10e9 + 7 取余输出。

第二三条是关键,t.s = s.t 举个例子 s = abab, t的话可以是ab。那么 t.s = ab(t)abab(s),s.t = abab(s)ab(t)。

t的长度要小于m。

例子:

一种大体思路就是判断s是否为由循环子字符构成的字符串,如abababab为子字符串ab循环构成的字符串。 如果是循环串,则找出子串的长度(len),如果不是则取s的长度(len)。 则(m/len)%10e9 + 7 即为所求。

一种判断是否为循环串的方法:

1.对s的长度进行因子分解

2.依次对因子进行遍历,按照因子长度对s进行截取,如果各子串都相同则记录因子跳出遍历,所找出的字符串即为所需。

#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#include <cstdio> using namespace std; int main(){
string s,preStr;
cin>>s;
int len = s.length();
vector<int> idx;
vector<string> sub;
//bool flag = true;
for(int i = ; i < len ; i++){
if(len%i==)
idx.push_back(i);
}
int sz = idx.size();
for(int i = ; i < sz ; i++){
int step = idx[i];
preStr = s.substr(,step);
bool flag = true;
for(int j = step; j < len/step ; j++){
if(s.substr(idx[i]*j, idx[i]) != preStr)
{
flag = false;
break;
}
}
if(flag == true)
break;
} cout<<preStr.length()<<endl; }

以上为找字符串串长度代码,可根据题目稍作修改即可。

leaderboard上面一个比较简洁的代码,基本思想相同。


#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
string s;
long m;
cin >> s >> m;
for (int i = ; i <= s.size(); i++) {
if (s.size() % i != ) continue;
int j;
for (j = i; j < s.size(); j++) {
if (s[j] != s[j%i]) break;
}
if (j == s.size()) {
cout << (m/i % (long)(1e9+)) << endl;
break;
}
} return ;
}

unexpected problem的更多相关文章

  1. evernote出现“Sync failed due to unexpected problem at server side”的问题

    继上次的"Invalid username and/or password"问题之后,evernote又出现了“Sync failed due to unexpected prob ...

  2. kettle报错 ../deploy does not exist, please create it.

    具体错误如下: Xlib: extension "RANDR" missing on display "localhost:10.0". ::, INFO [K ...

  3. SLF4J源码解析-LoggerFactory(一)

    slf4j的含义为Simple logging facade for Java,其为简单的为java实现的日志打印工具,本文则对其源码进行简单的分析 JAVA调用SLF4J public class ...

  4. 日志那点事儿——slf4j源码剖析

    前言: 说到日志,大多人都没空去研究,顶多知道用logger.info或者warn打打消息.那么commons-logging,slf4j,logback,log4j,logging又是什么关系呢?其 ...

  5. Codeforces Round #481 (Div. 3)题解

    成功掉到灰,真的心太累了,orz!!!!,不是很懂那些国外大佬为什么每次都是20多分钟AK的,QAQ A. Remove Duplicates time limit per test 1 second ...

  6. kettle_Spoon 修改共享DB连接带汉字引发的错误

    win10下: kettle_Spoon 修改共享DB连接带汉字引发的错误: Unexpected problem reading shared objects from XML file : nul ...

  7. kettle_删除“共享输出表”引发的错误

    原创作品.出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...

  8. coedforces #481Div(3)(ABCDEFG)

    A. Remove Duplicates Petya has an array aconsisting of nintegers. He wants to remove duplicate (equa ...

  9. Adaptive device-initiated polling

    A method includes periodically sending a polling call to an enterprise system outside the firewall a ...

随机推荐

  1. 小脚本一则---CDH的批量部署中,如果是从ESXI的VCENTER的模板生成的虚拟机,如何快速搞定网络网络卡配置?

    当然,在作模板的过程中,我们除了要定义好SELINUX,IPTABLES之后, HOSTS文件维护,用ZOOKEEPER还是RSYNC实现? 都要在前期好好规划.. 脚本如下,一般改成自己的就可以用. ...

  2. 在Linux上配置vsftpd

    一般安装好vsftpd这个服务,它的默认配置文件在这里:/etc/vsftpd/vsftpd.conf 用vim在里面可以添加一些变量控制权限之类的.还有很多chroot相关的东西,里面的变量都有作用 ...

  3. 如何打一手好Log(转)

    如果项目上过线的话,那你一定知道Log是多么重要. 为什么说Log重要呢?因为上线项目不允许你调试,你只能通过Log来分析问题.这时打一手好Log的重要性绝不亚于写一手好代码.项目出问题时,你要能拿出 ...

  4. HDOJ 1164 Eddy's research I(拆分成素数因子)

    Problem Description Eddy's interest is very extensive, recently he is interested in prime number. Ed ...

  5. cf435A Queue on Bus Stop

      A. Queue on Bus Stop time limit per test 1 second memory limit per test 256 megabytes input standa ...

  6. Android中ListView异步加载数据

    1.主Activity public class MainActivity extends Activity { private ListView listView; private ArrayLis ...

  7. POJ_3009——冰球,IDS迭代加深搜索

    Description On Planet MM-21, after their Olympic games this year, curling is getting popular. But th ...

  8. 远程连接mysql

    win系统下,连接别人的mysql或者让别人链接自己的mysql: 打开命令行cmd 进入mysql: mysql -u root -p mysql>use mysql;  mysql>s ...

  9. 接上一篇博客(解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match. )

    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variabl ...

  10. 关于ThinkPHP控制器的方法失效的问题

    今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...