Advertisement

上海计算机学会2020年9月月赛C++丙组T4随机性验证

阅读量:

题目描述

对于任意给定的一个字符串s,在其任何长度不小于2个字符的子串中, 如果某一特定字符出现次数多于该子串总长度的一半, 则我们说这个字符串不是充分随机的; 否则, 我们就称它为充分随机的. 现在,请判断给定的这个特定字符串是否具备充分随机性.

输入格式

单独一个字符串,表示 s。

输出格式

  • 如果 s 满足随机的性质,输出 Random string
  • 否则,输出 Not a random string

数据范围

记 s 的长度为 ∣s∣,

  • 对于 30% 的数据,1≤∣s∣≤1000;
  • 对于 60% 的数据,1≤∣s∣≤10000;
  • 对于 100% 的数据,1≤∣s∣≤100000。
    保证 s 仅由英文小写字母组成。

样例数据

输入:
yacs
输出:
Random string
输入:
iai
输出:
Not a random string
说明:
i出现了2次,超过了长度的一半
输入:
happy
输出:
Not a random string
说明:
对于子串app而言,p出现了两次,超过了长度的一半

对于任意的字符串来说,在某个特定位置上出现频率最高的单个字符数量若超过该字符串总长度的一半,则必然存在连续的三个字符中包含至少两个这样的特定字符。

详见代码:

复制代码
 #include <bits/stdc++.h>

    
 using namespace std;
    
 int main()
    
 {
    
     string s;
    
     cin>>s;
    
     int len;
    
     len=s.length();
    
     for (int i=0;i<=len-3;i++)
    
     {
    
     if (s[i]==s[i+1]||s[i]==s[i+2]||s[i+2]==s[i+1])
    
     {
    
         cout<<"Not a random string"<<endl;
    
         return 0;
    
     }
    
     }
    
     cout<<"Random string"<<endl;
    
     return 0;
    
 }

全部评论 (0)

还没有任何评论哟~