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

XTUOJ C++小练习(素数的判断,数字塔,字母塔)

素数的判断-----------------------------------------------------------------------------------------------------------------

#include <cstdio>
using namespace std;int main() {unsigned int n;// %u 格式说明符,读取无符号整数,_CRT_INSECURE_DEPRECATE_MEMORY 相关警告// 这里传入额外参数(如果是字符串才会用到,整数读取可传 0 或随意值,不同编译器处理有差异)while (scanf("%u", &n, sizeof(n)) == 1) {if (n == 0) break;if (n <= 1) {printf("No\n");}else if (n == 2) {printf("Yes\n");}else if (n % 2 == 0) {printf("No\n");}else {bool is_prime = true;for (unsigned int i = 3; i * i <= n; i += 2) {if (n % i == 0) {is_prime = false;break;}}printf("%s\n", is_prime ? "Yes" : "No");}}return 0;
}

一、筛选方法:先过滤掉0,1,2特殊数字,再筛过偶数,在奇数里找公因子。

二、细节:

1.用i*i ≤ n代替i ≤ sqrt(n),避免 sqrt 函数的性能损耗和精度误差。

2.使用scanf/printf替代cin/cout(默认情况下更快),应对大量输入。(<cstdio>)

3.用unsigned int存储n,刚好覆盖02³²-1的范围,避免溢出。

三、注意:在较新的 Visual Studio 编译器中,scanf 等函数被标记为 “不安全”,编译器建议使用更安全的 scanf_s(微软为 C 标准库函数做的安全增强版本 ),或者通过定义宏来禁用安全警告。

数字塔-----------------------------------------------------------------------------------------------------------------

#include <cstdio>
using namespace std;int main() {int i = 0;int n,line,sta;while (scanf("%d", &line) == 1 && line!=0){i++;printf("case %d:\n",i);sta = 1;for(int w = line;w > 0;w--){for (int j = w - 1;j > 0;j--) printf(" ");for (int k = sta * 2 - 1;k > 0;k--) printf("%d", sta);printf("\n");sta++;}}return 0;
}

字母塔-----------------------------------------------------------------------------------------------------------------

#include <iostream>
using namespace std;int main() {char target;int case_num = 1;  // 记录样例编号// 循环读取输入,直到遇到 '#' 结束while (cin >> target && target != '#') {// 输出样例标题cout << "case " << case_num << ":" << endl;case_num++;// 1. 计算最大层级(输入字母对应的层级)int max_level = target - 'A' + 1;  // 核心:字母转数字(层级)// 2. 遍历每一行(从最大层级向下到1)for (int i = max_level; i >= 1; i--) {// (1)输出左侧空格:第i行的空格数 = max_level - ifor (int space = 1; space <= max_level - i; space++) {cout << " ";}// (2)输出字母部分:先递增到当前最大字母,再递减回A// 左半部分:A → curr_char(递增)char curr_char = 'A';  // 从A开始while (curr_char < 'A' + (i - 1)) {  // 到 curr_char = 'A'+i-1 停止cout << curr_char;curr_char++;}// 右半部分:curr_char → A(递减)while (curr_char >= 'A') {cout << curr_char;curr_char--;}// (3)换行,准备下一行cout << endl;}}return 0;
}

http://www.dtcms.com/a/354471.html

相关文章:

  • 亚马逊合规风控升级:详情页排查与多账号运营安全构建
  • Unity游戏打包——Android打包环境(Mac下)
  • PDF压缩如何平衡质量与体积?
  • Electron 简介:Node.js 桌面开发的起点
  • 小鹏自动驾驶的BEV占用网络有哪些优势?
  • “矿山”自动驾驶“路网”编辑功能实现
  • Mip-splatting
  • 在docker 中拉取xxl-job以及配置数据库
  • 【Linux】Linux基础开发工具从入门到实践
  • Redis 哨兵(Sentinel)全面解析
  • JavaSE丨集合框架入门:从0掌握Collection与List核心用法
  • Two Knights (数学)
  • Feign整合Sentinel实现服务降级与Feign拦截器实战指南
  • uni-app 网络请求与后端交互完全指南:从基础到实战
  • 智能养花谁更优?WebIDE PLOY技术与装置的结合及实践价值 —— 精准养护的赋能路径
  • 【LeetCode】29. 两数相除(Divide Two Integers)
  • PhotoshopImageGenerator:基于Photoshop的自动化图像数据集生成工具
  • C# 操作 DXF 文件指南
  • WAF对比传统防火墙的优劣势
  • 从Cgroups精准调控到LXC容器全流程操作​:用pidstat/stress测试Cgroups限流,手把手玩转Ubuntu LXC容器全流程​
  • 打破存储局限:CS 创世 SD NAND 如何优化瑞芯微(RK)与北京君正平台的贴片式 SD 卡性能
  • 横扫SQL面试——流量与转化率分类
  • 机器人电源电感的认证和认证细节,知多少?
  • Spring Boot 整合 SSE, http长连接
  • odoo打印新解
  • lesson48:Ubuntu下Python与三大数据库实战:MySQL、MongoDB、Redis全攻略
  • 基于uni-app的iOS应用上架,从打包到分发的全流程
  • 算法题打卡力扣第15题:三数之和(mid)
  • 本地构建的 Docker 镜像迁移到另一台电脑上运行
  • Python自动化测试完整教程:pytest + selenium实战