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

蓝蓝算法题(一)

讲在前面:1.本人正在逐步学习C++,代码中难免有C和C++(向下兼容)混用情况。2.算法题目来自蓝蓝知识星球,没有对应的判决系统,运行到判决系统可以会有部分案例不能通过。

求素数

暴力求解(1 - n试探)


#include <iostream> 
using namespace std;
int main(){int num, i;cin >> num ;for(i = 2; i < num ;i ++){if ( num % i == 0) {cout << "不是素数" << endl;break;} }if ( i == num ) cout << "是素数" << endl;return 0;
}

优化算法——奇数优化(由于所有素数除了2,都是从奇数中出现。所以我们可以先去掉偶数,再筛选,这样的效率就会更高一点)
一个数如果不是素数则有两种情况:1.是偶数 2.可以被[3,n-1]之内的某些奇数整除

//求素数
#include <iostream> 
using namespace std;
int main(){int num, i, flag = 1;cin >> num ;if ( num % 2 == 0) flag = 0; //不是素数 for(i = 3; i < num ;i += 2 ){if ( num % i == 0) {flag = 0;break;} }if ( flag == 1 ) cout << "是素数" << endl;else cout << "不是素数" << endl;return 0;
}

优化算法——平方根优化
每一个数的因数都是成对出现的 且以其平方根为分界线。例如:30 (1,30),(2,15),(3,10),(5,6)以sqrt(30)为分界线。

//求素数
#include <iostream> 
#include <cmath>
using namespace std;
int main(){int num, i;cin >> num ;for(i = 2; i < (int) sqrt( num ) + 1 ;i ++){if ( num % i == 0) {cout << "不是素数" << endl;break;} }if ( i == num ) cout << "是素数" << endl;return 0;
}

求完全数

暴力求解

//求完全数 
#include <iostream> 
#include <cmath>
using namespace std;
bool perfect( int num );
int main(){int num, i;cin >> num ;for(i = 2; i <= num ;i ++){if ( perfect( i ) )  cout << i << endl;}return 0;
}
bool perfect( int num ){int sum = 1;for ( int i = 2; i < num; i ++){if ( num % i == 0 ) sum += i; }if ( sum == num ) return true;return false;
}

优化:利用欧拉公式求完全数
欧拉公式求素数

//求完全数
#include <iostream> 
#include <cmath>
using namespace std;
bool is_prime( int num ); //求素数部分 可以参照题目一的多种方法
int main(){int num,ans = 0;cin >> num;for(int i = 2; i <= num && pow(2, i - 1) * (pow(2 , i)-1) <= num; i++)){if ( is_prime( i ) && is_prime( pow(2,i)-1)) ans ++;}cout << ans << endl;
}
bool is_prime( int num ){int i = 2;for( ; i < (int) sqrt( num ) + 1 ;i ++){if ( num % i == 0) return false;	}if ( i == num ) return true;
} 

统计字符串字符

给定字符串ASCII码是【1,127】,统计其中不同字符个数。例如:aaabbbc 输出3

利用桶的思想:
开辟一个大小为 128 的数组初始化全为0,若有对应字母出现则在桶序数上+1,最后统计不为0的个数就是不同的字母个数。

#include <iostream> 
#include <string>
using namespace std;
int main(){string str;int cnt[128] = {0}, ans = 0;cin >> str;for(int i = 0; i < str.length() ; i++){cnt[ (int) str[i]] += 1;}for(int i = 0; i < 128 ; i++){if ( cnt[i] != 0)  ans++;}cout << ans << endl;
}

求最大公约数和最小公倍数

两个数A B的minmultiple(最小公倍数)* maxdivisor(最大公约数) = A * B
两个数最大公约数三种计算方法


#include <iostream> 
#include <algorithm>
using namespace std;
//采用辗转相除法(欧几里得)
int GetMaxDivisor(int a,int b){if(b == 0)return a;return GetMaxDivisor(b, a%b);
}int main()
{int a, b;cin >> a >> b;int md = GetMaxDivisor(a,b);int mm = a * b / md;cout << "最大公约数:" << md << "   最小公倍数:" << mm;return 0;
}

小球运动

小球从指定高度落下,每次弹起高度减半,问小球从落下到静止经过的距离(float h < 10-6|| double h<10-15认为弹起高度为0 达到静止)

#include <iostream> 
using namespace std;
int main()
{double height, sum ;cin >> height;// 从上向下 初始距离height sum = height;while( height ){// 从弹起到落下经过的距离是 弹起高度的2倍 即是上次弹起的高度值 sum += height;height /= 2;}cout << sum << endl;return 0;
}

答案正确

得到“答案正确”的条件是:

1.字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
2.任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
分析

1.字符串中必须有’P’,‘T’,‘A’;
2.‘P’必须在‘T’之前,A穿插其中;
3.P前面的A的个数 乘以 P和T之间的A的个数 等于 T后面的A的个数——成立条件2中 可以推出
#include <iostream> 
#include <string>
using namespace std;
int main(){string str;int num = 0;cin >> num;while(num){cin >> str;int num1 = 0, num2 = 0, num3 = 0;int j = 0, k = 0;for(int i = 0; i < str.length(); i++){if( str[i] == 'P'){j = i; break;}else if( str[i] == 'A' ) num1 += 1;}for(j+1 ; j < str.length(); j++){if( str[j] == 'T'){k = j; break;}else if( str[j] == 'A') num2 += 1;}for(k+1 ; k < str.length(); k++){if( str[k] == 'A' ) num3 += 1;}if( num1 * num2 == num3 && (num1 + num2 + num3 + 2) == str.length() && str.length() > 2) cout << "YES" << endl;else cout << "NO" << endl;num --;}return 0;
}

计算字符个数

由于主串和目标字符都会有大小写的情况出现,所以代码中一致转换为小写。

#include <iostream> 
#include <string>
#include <algorithm>
using namespace std;
int main(){string str; char ch;int ans=0;cin >> str >> ch;//调用算法库中函数将 str全部转换为小写字母 transform(str.begin(),str.end(),str.begin(),::tolower);//将目标字母转换为小写  toupper()转换为大写 ch = tolower(ch); for( int i = 0; i < str.length(); i++){if( str[i] == ch) ans++;}cout << ans << endl;
}

字符串反转

利用第三个变量实现两个字符的调换

#include <iostream> 
#include <string>
using namespace std;
int main(){string str;cin >> str;char ch;//范围是长度的一半,否则两次调换是使得结果与原来相同for(int i = 0; i < str.length()/2 ; i++){//体会双指针的思想ch = str[i];str[i] = str[str.length()-i-1];str[str.length()-i-1] = ch;} cout << str << endl;
}

兔子数量

斐波那契数列
递归调用时要注意递归出口!

#include <iostream> 
#include <string>
using namespace std;
int Fibonacci( int num);
int main(){int num,cnt = 0;cin >> num;cnt = Fibonacci(num);cout << cnt << endl;return 0;
}
int Fibonacci(int num){//递归出口if(num == 1|| num == 2) return 1;return Fibonacci(num-2) + Fibonacci( num-1);
}

迭代
迭代求斐波那契数列

成绩转换

将百分制成绩转换为等级制成绩。利用 if -else 即可

鸡兔同笼

解方程问题
在这里插入图片描述注意判断数据的合理性

#include <iostream> 
using namespace std;
int main(){int heads, legs;cin >> heads >> legs;int rabbits = legs/2 - heads, chickens = 2 * heads - legs/2;if(rabbits * 4 + chickens * 2 == legs) cout << "兔子有" << rabbits << "只,鸡有" << chickens <<"只" << endl;else cout << "No answer" << endl;return 0;
}

相关文章:

蓝蓝算法题(一)

讲在前面&#xff1a;1.本人正在逐步学习C&#xff0c;代码中难免有C和C&#xff08;向下兼容&#xff09;混用情况。2.算法题目来自蓝蓝知识星球&#xff0c;没有对应的判决系统&#xff0c;运行到判决系统可以会有部分案例不能通过。 求素数 暴力求解&#xff08;1 - n试探…...

Python截图自动化工具

1、展示部分源码(写的比较乱&#xff0c;哈哈) 2、功能展示 1&#xff09;首页 2&#xff09;按钮截图(用于自动翻页) 3&#xff09;保存位置按钮(选择图片保存的位置) 4&#xff09;重复次数&#xff0c;就是要截取多少次 5&#xff09;定位截屏(截取的内容&#x…...

网络作业2【计算机网络】

网络作业2【计算机网络】前言推荐网络作业2一. 单选题&#xff08;共3题&#xff0c;19.8分&#xff09;二. 多选题&#xff08;共1题&#xff0c;6.6分&#xff09;三. 填空题&#xff08;共8题&#xff0c;52.8分&#xff09;四. 判断题&#xff08;共3题&#xff0c;20.8分&…...

如何给网页加速,如何加速网页速度?

如何加速网页速度&#xff1f;提高移动网页加载的速度&#xff0c;可以从服务器的优化、网页的容量、请求响应等方面入手&#xff0c;这些方面优化后必然可以提高加载速度。1、服务器硬件软件配置要好&#xff0c;网络、读写响应等要做好优化。2、可以开启gzip压缩技术&#xf…...

linux kernel 5.0 inline hook框架

github:https://github.com/WeiJiLab/kernel-hook-framework 一、项目介绍 Usually we want to hack a kernel function, to insert customized code before or after a certain kernel function been called, or to totally replace a function with new one. How can we…...

【Java版oj】day12二进制插入、查找组成一个偶数最接近的两个素数

目录 一、二进制插入 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、查找组成一个偶数最接近的两个素数 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff0…...

【24】Verilog进阶 - 序列检测2

VL35 状态机-非重叠的序列检测 1 思路 状态机嘛,也是比较熟悉的朋友啦, 我就火速写出了STG。如下黑色所示: 2 初版代码 `timescale 1ns/1nsmodule sequence_test1(input wire clk ,input wire rst ,input wire data ,output reg flag ); //*************code**********…...

详解线段树 ---更新查询

目录 一.问题引入 二.线段树 1.什么是线段树 2.线段树的举例 三.构建线段树 1.思路分析 2.代码实现 四.更新 1.思路分析 2.代码实现 五.查询 1.思路分析 2.代码实现 一.问题引入 有n个整数的数组,我们要 求解下标从left到right的元素之和为多少(query操作),然后还…...

【C语言进阶:刨根究底字符串函数】strncpy、strncat、strncmp函数

再前几篇的博客中大家可能发现了&#xff0c;strcpy&#xff0c;strcat&#xff0c;strcmp 这三个函数在使用时对源字符串没有长度限制&#xff0c;几乎是将源字符串的内容全部进行操作。在VS编译器中的这些函数显得不安全了&#xff0c;因此VS会提醒你在其后加上 _s &#x…...

计算机面试常见问答题目

英语口语 自我介绍 Hello, teachers. My name is Wang Xu. I come from Ningxia. I graduated from the School of Computer Science, Xi an Jiaotong University, majoring in Internet of Things. Next, I will introduce myself from four aspects. First of all, I studi…...

mac pro m1:安装dump文件内存分析工具——MAT

0. 引言 本文主要针对mac m1下安装Jprofiler进行讲解&#xff0c;安装核心步骤同样适用于其他系统 1. 安装 如果使用的是eclipse可以在插件中直接安装MAT&#xff0c;因为我使用的是idea开发&#xff0c;所以选择独立安装MAT工具 1、下载地址&#xff1a;https://www.eclip…...

并发基础之线程池(Thread Pool)

目录前言何为线程池线程池优势创建线程池方式直接实例化ThreadPoolExecutor类JUC Executors 创建线程池线程池挖掘Executors简单介绍ThreadPoolExecutor核心类ThreadPoolExecutor 类构造参数含义线程池运行规则线程设置数量结语前言 相信大家都知道当前的很多系统架构都要求高…...

【C语言进阶】内存函数

天生我材必有用&#xff0c;千金散尽还复来。 ——李白 目录 前言 一.memcpy函数 ​1.实现memcpy函数 2.模拟实现memcpy函数 二.memmove函数 1.实现memmove函数 2.模拟实现memmove函数 三.memcpy函数和memmove函数的关系 四.memcm…...

Java开发 - ELK初体验

前言 前面我们讲过消息队列&#xff0c;曾提到消息队列也具有保存消息日志的能力&#xff0c;今天要说的EL看也具备这个能力&#xff0c;不过还是要区分一下功能的。消息队列的日志主要指的是Redis的AOF&#xff0c;实际上只是可以利用了消息队列来保存&#xff0c;却并不是消…...

AI_Papers周刊:第六期

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 2023.03.13—2023.03.19 文摘词云 Top Papers Subjects: cs.CL 1.UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation 标题&#xff1a;UPRISE&#xff1a;改进零样本评估…...

JS运行环境、包管理、打包工具总结

&#x1f333;JS运行环境-node.js 运行环境就是代码解析和执行的程序&#xff0c;比如jvm等虚拟机&#xff0c;他们的主要工作就是根据设定的语法规则解析编译代码&#xff0c;然后运行代码。 js的语法规则遵循ES规范。 &#x1f341;node.js Node.Js官网 Node.js是一种基于Ch…...

day4网络编程(广播和组播)

1.广播 发送端&#xff08;类似于客户端&#xff09; 流程&#xff1a; 创建套接字 填充接收端&#xff08;服务器&#xff09;网络信息结构体 bind(非必须绑定) 设置允许广播 向接收端&#xff08;服务器&#xff09;发送数据 关闭套接字文件 #include <stdio.h> #in…...

Vue3 自动引入组件及函数、动态生成侧边栏路由

Vue3 自动引入组件及函数、动态生成侧边栏路由 1、安装依赖 npm install -D unplugin-auto-import unplugin-icons unplugin-vue-components插件使用说明 unplugin-auto-import 说明 —— 自动引入函数、组件 unplugin-vue-components 说明 —— 自动注册组件 unplugin-ic…...

人工智能交互系统界面设计

文章目录前言一、项目介绍二、项目准备三、项目实施1.导入相关库文件2.人脸信息验证功能3.语音交互与TCP数据通信4.数据信息可视化四、相关附件前言 在现代信息化时代&#xff0c;图形化用户界面&#xff08;Graphical User Interface, GUI&#xff09;已经成为各种软件应用和…...

蓝桥杯嵌入式第一课--创建工程

概述学习本节之前&#xff0c;必须要先安装好 keil5 以及 CubeMX 等软硬件环境&#xff0c;如果你已经安装完成&#xff0c;请告诉自己&#xff1a;考试现在开始&#xff01;从CubeMX开始CubeMX是创建工程模板的软件&#xff0c;也是我们比赛时第一个要进行操作的软件。一、选择…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...