本帖背景:此帖讲解大一新生团队作业 截止日期10-31 17:09

P1150(Peter的烟)

算法简介

本题主要考察的是模拟算法

模拟算法一般考察一些比较基础的题目,它将生活中的实例融合到了编程题中。

具体要求我们只需要跟着题目一步步走即可。

但是我们要注意模拟算法同样也是很容易出错的,尤其是边界上的问题。

代码

#include<iostream>
using namespace std;
int main()
{
int res = 0;//这个是最终答案,也就是最后能换多少根烟,初始值是0
int n,m;//题目所给的烟和多少根能换一只烟
cin >> n >> m;
int k = 0;//k是临时变量,储存每一次操作后的烟头数量
while(n){//以n作为循环条件,n是目前所存的烟
res += n;//刚开始所有的烟
k += n;//烟头数量(因为n根烟已经全部变成了烟头)
n = k / m;//(用k个烟头能换多少根烟,更新n(目前所存的烟)的值)
k -= n * m;//烟头换烟,还剩下的烟头
}
cout << res << endl;
return 0;
}

注意:在c++中常规的除法是整除操作,比如4/3,这两个整型数相除的结果是1,向下取整,而不是1.33333

P1035(级数求和)

算法简介

本题所考察的也是模拟算法,我们只需要跟着题目所要求的公式把程序写出来就能得到正确的答案

注意:题目中所给的公式包含除法,所以我们应该使用浮点数类型使得所模拟的公式更准确

代码

#include<iostream>
using namespace std;
int k;
int main()
{
cin >> k;//题目中所给的k
double m = 1;//公式中的分子都是1。声明变量为浮点数
int p = 1;//既是项数,也是公式中的分母,比如第一项是1,分母也为1
double sum = 0;//为前p-1项的和,刚开始为0
while(sum <= k){//直到前p-1项的和大于题目所给的k就跳出
sum += m / p;//模拟公式
p++;//项数往后递推
}
cout << p - 1<< endl;//由于sum是前p-1项的和,所以最终答案是p-1
return 0;
}

注意:浮点数除法和上一题的整数除法不同,c++中的除法会保留精度

例如在c++中

  • 两个整形数相除,答案为整型数 3/4 = 0 4/3 = 1
  • 两个数中有1个是浮点数,则要保留精度 如3/4.0 = 0.75 4/3.0 = 1.33
  • 两个数都是浮点数,则同上

P1075(质因数分解)

算法简介

本题考察普通的数学。

质数又被称为素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

题目的大致意思如21 = 3 * 7(3和7显然都是质数)较大的质数是7,所以输出7

显然题目中所给的数除了能分解成两个素数,不可能有其他的因子(因为质数已经不能再分解)

细节思考

由于题目中n的数据范围太大(2*10 ^ 9),而c++一秒只能计算10 ^ 7~8

为了尽可能地不TLE(时间超限),我们需要想一种优化的方法

首先我们知道,只要能找到较小的素数,我们就能找到较大的素数(因为两者的乘积就是n)

其次,较小的那个质数的平方一定会小于等于n

假如较小的质数是x,x * x<=n

利用反证法证明:

已知x * y = n(x是较小的质数,y是较大的质数)

假设x * x>n 而x < y

根据不等式的传递性 n < x * x < x * y

由于x * y=n 则会出现n < n的矛盾

假设不成立

所以x * x <= n

这样我们的时间复杂度被大大优化了

代码

#include<iostream>
using namespace std;
int n;
int main()
{
cin >> n;//如题意
for(int i = 2; i <= n/i; ++i)//最小的素数从2开始,i<=n/i等价于i * i <= n,像我们刚才证明的那样
if(n % i == 0) {//如果这个数能被整除,说明这个数是较小的质数
cout << n / i << endl; //把另一个较大的质数输出
return 0;//直接结束程序
}
return 0;
}

大一新生的作业(洛谷P1150,1035,1075)的更多相关文章

  1. 集训作业 洛谷P1101 单词方阵

    这个题的长度真的有点长,我直接放图片吧 这个题又是一个和谐的搜索,找到yizhong的y就开始8面搜索,遇见正确的字母就继续搜索,不正确就果断放弃,果然又是一个和谐的搜索呢. #include< ...

  2. 集训作业 洛谷P1010 幂次方

    这个…… 这个题看上去有点难的样子. 仔细看看,感觉有点简单.啊,是递归啊,正经的看一看,好像是把一个数分成2的几次方的和. 然后余数和比他小的最大的2的次方数如果不是2的一次方或者2的0次方,就继续 ...

  3. 集训作业 洛谷P1135 奇怪的电梯

    这个题我见过!!! 我之前在石油大学的网站上做练习赛,提高了很多,这个题是我第一次在比赛里见到深搜. 当时蒙蔽的一批,现在发现好简单…… 这个题和普通的深搜没什么区别,甚至可以说简单了,因为这个是1维 ...

  4. 集训作业 洛谷P1433 吃奶酪

    嗯?这题竟然是个绿题. 这个题真的不难,不要被他的难度吓到,我们只是不会计算2点之间的距离,他还给出了公式,这个就有点…… 我们直接套公式去求出需要的值,然后普通的搜索就可以了. 这个题我用的深搜,因 ...

  5. 集训作业 洛谷P1443 马的遍历

    这个题是个搜索,而且有是最少的步数,肯定就是广搜啦,不知道为什么的同学先去学习一下广搜吧. 养成好习惯,看见最少步数就去想想广搜(只是我自己觉得) 竟然这个题可以如此顺畅的想到广搜,感觉不难啊,但还有 ...

  6. 集训作业 洛谷P1032 字串变换

    集训的题目有点多,先写困难的绿题吧(简单的应该想想就会了) 嗯,这个题看起来像个搜索呢(就是个搜索) 我们仔细想想就知道这个题肯定不能用深搜,可以优化的地方太少了,TLE是必然的. 那我们该怎么办呢? ...

  7. 集训作业 洛谷P3913 车的攻击

    这个题一开始被我想复杂了,但总体差不多. 脑子清醒后我直接看他占领了几条长,几条宽,比如一个长3宽3的地图. 被占领了一条宽,就可以看成一个长3宽2的地图.这个长3宽2的地图就是出去可以被攻击的点剩下 ...

  8. 集训作业 洛谷P1866 编号

    这个题是个数学题啊. 总体思路不是很难,每个兔子有一个编号,只要不停的看下一个兔子有多少可选编号,再乘上之前的所有可能性就可以算出一共的编号方法. #include<iostream> # ...

  9. 集训作业 洛谷P1017 进制转换

    这个题的题目真的太恶心了. 重点是他的题目描述和他的目标没啥关系. 和最终目的有关系的只有这么一句话:”输出此负进制数及其基数,若此基数超过10,则参照16进制的方法处理.“ 我们通过看这句话可以发现 ...

  10. 集训作业 洛谷P1100 高低位交换

    这个题简单来说就是把一个数转成32位的2进制数,不够的补0.然后把这个数的前半部分和后半部分互换,再计算结果. 思路简单明了,接下来是代码: #include<iostream> #inc ...

随机推荐

  1. 2022年官网下安装ZooKeeper最全版与官网查阅方法

    目录 一.环境整合 构建工具(参考工具部署方式) 二.官网下载 三.解压安装 四.配置环境 五.启动运行 六.配置为服务 七.查看设置服务 其他版本安装 构建工具(参考工具部署方式) 一.环境整合 构 ...

  2. C 语言编程 — 高级数据类型 — 指针

    目录 文章目录 目录 前文列表 指针 声明指针 使用指针 NULL 指针 指针的算术运算 指向指针的指针 将指针作为实际参数传入函数 从函数返回指针 一个古老的笑话 前文列表 <程序编译流程与 ...

  3. 使用XCA自制CA证书并签发https证书

    序言 本文目的是使公司内网部署的Web可以使用https的方式访问 现有部署的系统有用域名访问,有用IP访问,但都是用http的方式 所以打算在公司内网部署统一的CA证书,并可以自己签发对应的域名和I ...

  4. .NET ASPIRE 预览版 7 发布

    .NET Aspire 预览版 7 并不是原计划的一部分,此预览版有很多重大 API 更改,部分原因是一旦产品发布,我们将致力于稳定的 API 表面.可以说,Aspire团队希望确保在最终发布之前完成 ...

  5. .net程序员学习java篇一(搭建SSM)

    一.安装IDE 相比于.net环境的一气呵成,java可能麻烦一点,这里记录下来,避免萌新踩坑 1.1安装JDK,这里不要玩什么花哨,老老实实选个大众版(Oracle JDK1.8x),设置环境变量, ...

  6. 微信小程序,wx.getUserProfile接口将被收回,新的头像获取方式永久保存

    微信文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ 新的获取头像方式:https://developers.weixin. ...

  7. IceRPC之多路复用传输>快乐的RPC

    作者引言 很高兴啊,我们来到了IceRPC之多路复用传输>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界. icerpc 和多路复用传输 了解 icerpc 协议和多路复用 ...

  8. opensuse tw快速部署

    使用GUI快速配置opensusetw 先看官方配置指南 换源 清华源之oss+non-oss links 清华源之packman links sudo zypper ar -cfg 'https:/ ...

  9. Pod安全策略:PodSecurityPolicy(PSP)

    目录 一.系统环境 二.前言 三.PodSecurityPolicy 简介 四.为什么需要 PodSecurityPolicy 五.给客户端授权 六.启用PodSecurityPolicy(PSP) ...

  10. 震惊!docker镜像还有这些知识,你都知道吗?----镜像(一)

    镜像操作命令表格 docker image 子命令 docker子命令 功能 docker image build docker build 从Dockerfile开始构建镜像 docker imag ...