Surprising Strings
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 5081   Accepted: 3336

Description

The D-pairs of a string of letters are the ordered pairs of letters that are distance D from each other. A string is D-unique if all of its D-pairs are different. A string is surprising if it is D-unique for every possible distance D.

Consider the string ZGBG. Its 0-pairs are ZG, GB, and BG. Since these three pairs are all different, ZGBG is 0-unique. Similarly, the 1-pairs of ZGBG are ZB and GG, and since these two pairs are different, ZGBG is 1-unique. Finally, the only 2-pair of ZGBG is ZG, so ZGBG is 2-unique. Thus ZGBG is surprising. (Note that the fact that ZG is both a 0-pair and a 2-pair of ZGBG is irrelevant, because 0 and 2 are different distances.)

Acknowledgement: This problem is inspired by the "Puzzling Adventures" column in the December 2003 issue of Scientific American.

Input

The input consists of one or more nonempty strings of at most 79 uppercase letters, each string on a line by itself, followed by a line containing only an asterisk that signals the end of the input.

Output

For each string of letters, output whether or not it is surprising using the exact output format shown below.

Sample Input

ZGBG
X
EE
AAB
AABA
AABB
BCBABCC
*

Sample Output

ZGBG is surprising.
X is surprising.
EE is surprising.
AAB is surprising.
AABA is surprising.
AABB is NOT surprising.
BCBABCC is NOT surprising.

Source

 
刚开始没看懂题意!!!!!!!!
题意如下:

定义D-pairs表示取字符串s中相距为D的两个字母所构成的字母对,该字母对中两个字母的位置顺序与他们在主串s中的位置顺序一致

定义D-unique表示,若从字符串s中取出所有相距为D的字母对D-pairs,且这些D-pairs都是独一无二的,那么成字符串s是一个D-unique串

D的取值范围为0~s.len()-2

假如字符串s对于所有的D都有D-unique成立,则字符串s是令人惊讶的 = =

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<string> using namespace std; char str[]; int main(){ //freopen("input.txt","r",stdin); map<string,int> mp;
while(~scanf("%s",str) && str[]!='*'){
int flag=;
int len=strlen(str);
//printf("str=%s\n",str);
string tmp;
int blank=;
for(int i=;i<len-blank && flag;i++){
tmp="";
mp.clear();
for(int i=;i<len-blank && flag;i++){
tmp=tmp+str[i]+str[i+blank];
//cout<<"-------- "<<tmp<<endl;
if(mp[tmp])
flag=;
mp[tmp]=;
tmp="";
}
blank++;
}
if(flag)
printf("%s is surprising.\n",str);
else
printf("%s is NOT surprising.\n",str);
}
return ;
}

最新文章

  1. 使用OAuth、Identity创建WebApi认证接口供客户端调用
  2. 解决At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this log
  3. Coding the Matrix (2):向量空间
  4. Linux 下配置多机实时同步
  5. Ensures there will be no &#39;console is undefined&#39; errors
  6. python调用c代码
  7. [百度百科]dir命令指定显示的排序方式
  8. 在Linux命令行中以图形化窗口打开文件夹
  9. codeforces721C
  10. Python笔记4——字典的一些基本操作
  11. gevent实现基于epoll和协程的服务器
  12. elastic search 重要的系统配置
  13. gcc/g++ disable warnings in particular include files
  14. Baidu WebFE(FEX)团队开发 的 文件上传插件 WebUploader
  15. kbmmw 的HTTPSmartService入门
  16. Vue文件跳转$router传参数
  17. golang 的精髓--pipeline流水线,对现实世界的完美模拟
  18. 线程8--GCD常见用法
  19. C语言学习记录_2019.02.06
  20. python基础学习1-网络爬虫程序中的代理IP设置

热门文章

  1. Redis自学笔记 --Hash、List、Set类型简述
  2. Qt5 for Android: incompatible ABI
  3. [Functional Programming] mapReduce over Async operations with first success prediction (fromNode, alt, mapReduce, maybeToAsync)
  4. 安全删除U盘或其他硬件 unlocker的使用方法
  5. Java 吸血鬼数字
  6. iOS 怎样更新APP
  7. 代码生成器的关键代码(读取PDM文件)
  8. 【转载】如何在Oracle中复制表结构和表数据
  9. 用node.js写的代码
  10. 文本框只支持数字、小数点、退格符、负号、Del键