当前位置: 首页 > news >正文

统计字符串每个字符出现频率

输入一个字符串,统计每个字符的出现频率,然后判断最大频率与最小频率的差值 cnt:

如果 cnt 是质数,则输出 "Lucky Word" 和 差值;

否则输出 "No Answer" 和 0。

#include <bits/stdc++.h>
using namespace std;bool valid(int n)//判断是否为质数
{if (n <= 1) return false;if (n == 2) return true;if (n % 2 == 0) return false;int sqrtN = static_cast<int>(sqrt(n));for (int i = 3; i <= sqrtN; i += 2) {if (n % i == 0) return false;}return true;
}int main()
{unordered_map<char,int> fre;string str;cin >> str;for(char c : str){// if (islower(c))fre[c]++;}int maxx = INT_MIN; //初始化int minn = INT_MAX;for(auto & [ _ ,fret ] : fre){if(fret > maxx)maxx = max(fret,maxx);if(fret <minn)minn = min(fret,minn);}
//第二种写法for(auto & pairr : fre){if(pairr.second > maxx)maxx = max(pairr.second , maxx);if(pairr.second < minn)minn = min(pairr.second , minn);}int cnt = maxx - minn;if(valid(cnt)){cout << "Lucky Word"<<endl;cout << cnt << endl;}else {cout << "No Answer"<<endl;cout << 0 << endl;}return 0;
}

bool valid(int n)//判断是否为质数
{if (n <= 1) return false;if (n == 2) return true;if (n % 2 == 0) return false;int sqrtN = static_cast<int>(sqrt(n));for (int i = 3; i <= sqrtN; i += 2) {if (n % i == 0) return false;}return true;
}

质数

质数(英文名:Prime number)又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数

质数又称素数。 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

int sqrtN = (int)sqrt(n);  // C 风格
int sqrtN = static_cast<int>(sqrt(n));  // C++ 风格(更推荐)

static_cast<int>(sqrt(n))是C++ 的 显式类型转换(类型安全)

int sqrtN = static_cast<int>(sqrt(n));
for (int i = 3; i <= sqrtN; i += 2) {if (n % i == 0) return false;
}
原理:

如果一个数 n 可以被某个数 i 整除(i * j == n),那一定有一对因数 (i, j)

  • 如果 i > sqrt(n),那么对应的 j 一定是 < sqrt(n)

  • 所以检查到 sqrt(n) 就能覆盖所有可能的因数对,超过了就重复了。

举个例子:

判断 n = 49 是否为质数:

  • 它的因数对是 (1,49)(7,7)

  • 超过 sqrt(49)=7 再查其实没意义了

为什么只查奇数:i += 2

  • 因为偶数除了 2 本身,不可能是质数

  • 所以我们在函数开头已经判断了 if (n % 2 == 0) return false;,后面只查奇数更快!

527

http://www.xdnf.cn/news/20737.html

相关文章:

  • <sql>、<resultMap>、<where>、<foreach>、<trim>、<set>等标签的作用和用法
  • CCS编译器无法导入工程文件,检查原因是版本编译器编译问题
  • Oracle 19c部署之RMP一键安装初始化(五)
  • [TriCore][TC3XX][用户手册] - 16.中断控制器 - IR
  • MATLAB 控制系统设计与仿真 - 35
  • 提示词工程学习指南(专家级)- 上集
  • OpenSPG/KAG V0.7发布,多方面优化提升,事实推理效果领先且构建成本降至11%
  • 2025 第一届ynuctf wp crypto-misc
  • 【sharding-jdbc配置以及例子】
  • IPD需求变更管理怎么做?4步实现需求版本有效控制
  • Node.js 异步调用淘宝API实战:构建高吞吐商品详情数据采集方案
  • MCP协议 —— AI世界的“USB-C接口”
  • PMP考试费能报销吗?报销流程是什么?
  • 软件项目验收报告模板
  • csdn封面图快速制作【独一无二的图】
  • Pyside6联合QML实现消息弹窗提示
  • 通过 Tailwind CSS 自定义样式 实现深色模式切换
  • Brain Stimulation | 状态依赖性刺激中的大脑网络动态:基于隐马尔可夫模型的EEG-TMS联合分析
  • 多态:面向对象编程的重要特性
  • CSS伪类
  • CSS 文件格式
  • 期货交易躲过AI捕杀—期货反向跟单策略
  • 基于PySide6与pyCATIA的圆柱体特征生成工具开发实战——NX建模之圆柱命令的参考与移植
  • 守护进程编程、GDB调试以及外网连接树莓派
  • 【数据结构】深入理解:完全二叉树中叶子节点与分支节点的数量关系推导
  • 每天学一个 Linux 命令(21):tree
  • Harmony5.0 设置应用全屏模式,隐藏导航栏和状态栏
  • 我的创作纪念日
  • HCIP-H12-821 核心知识梳理 (3)
  • 系统架构设计师:计算机组成与体系结构(如CPU、存储系统、I/O系统)高效记忆要点、知识体系、考点详解、、练习题并提供答案与解析