2016NOIP普及组真题 1. 金币

devtools/2024/9/25 10:37:59/
线上OJ:

一本通:http://ybt.ssoier.cn:8088/problem_show.php?pid=1969

核心思想:

解法1、由于数据量只有 10000 天,估可以采用 模拟每一天 的方式。

#include <bits/stdc++.h>
using namespace std;int k = 0;int main()
{int ans = 0, coin = 1, cnt = 0;cin >> k;for(int i = 1; i <= k; i++) // k 轮{ans += coin; 	// +当前的金币金额cnt++;			// 金币出现的次数+1(比如3出现了1次,出现了2次,出现了3次)if(cnt == coin) // 如果金币金额和金币出现的次数相等(连续3天出现3),则重置金币数量和金币出现的次数{coin++;cnt = 0;}}cout << ans << endl;return 0;
}

解法2、在 数据量大 的情况下,模拟每一天容易超时,此时可以考虑用瞪眼法寻找数学规律

在这里插入图片描述

比如我们的目标是第6天:在如下的表格中,发现第6天正好在完整的第3轮。所以第6天的金币数量前3轮的金币数量总和,1*1+2*2+3*3 = 14
比如我们的目标是第13天:在如下的表格中,发现 第13天 正好是 走过了完整的4轮,它自身 在第5轮。所以第13天的金币数量前面完整4轮的金币数量总和,再加上后面还缺的3天,即 (1*1+2*2+3*3+4*4)+5*3 = 31
综上所述,方法二是先找出 完整的n轮,然后 每一轮的金币直接用 i*i 计算(不用for循环i次),再补上最后缺的金币即可。

#include <bits/stdc++.h>
using namespace std;int k = 0;
int main()
{int ans = 0, lun = 0; // 第1轮1个,第2轮2个,第3轮3个,第4轮4个。可知6在第3轮,7在第4轮cin >> k;	while(k >= ++lun) // 如果剩余的轮次还次包含完整的一轮(lun) ,则继续。k -= lun;lun--; // 跳出时,最后一次while多了一次++lun,所以要减回去	for(int i = 1; i <= lun; i++)ans += i * i; // 第i轮的金币数量是 i*ians += (lun + 1) * k;  // 把最后一轮不完整的金币加上cout << ans;return 0;
}

http://www.ppmy.cn/devtools/11424.html

相关文章

克隆两台虚拟机作为子节点(三)

选中一台要克隆的虚拟机&#xff0c;在菜单栏 虚拟机下 选择 管理-->克隆 选择虚拟机中的当前状态 继续-->创建完整克隆 根据需要进行命名&#xff0c;最好修改安装的路径。

4-19 算法思路总结

leetcode 98 验证二叉搜索树 利用递归算法&#xff0c;从上而下递归&#xff0c;遇到false直接返回无需递归到叶子节点&#xff0c;从上往下递归时&#xff0c;传递并改变两个参数&#xff0c;对于当前节点的最大值以及最小值&#xff0c;对于根节点来说&#xff0c;初始化的最…

[docker] 网络连接

[docker] 网络连接 使用 docker 容器会遇到下面 3 种情况&#xff1a; 容器与万维网之间的交流 默认情况下是允许的 从容器到本机的交流 假设有一些服务运行在本机&#xff0c;如数据库&#xff0c;而 docker 需要和本机进行交流去获取数据 这个实现需要配置 容器与容器之间…

CentOS7下安装mysql8或者mysql5.7

mysql8 1、下载 访问mysql官网下载mysql8软件包 https://dev.mysql.com/downloads/mysql/ 选择相应的版本如&#xff1a;RPM Bundle mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar RPM Bundle 8.0.33 下载地址&#xff1a;https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.…

C#面:阐述什么是泛型委托

泛型委托是 C# 中一种强大的特性&#xff0c;它允许我们定义一个可以接受任意类型参数的委托。 通过泛型委托&#xff0c;我们可以在编写代码时不需要指定具体的参数类型&#xff0c;而是在使用委托时再指定参数类型。 在 C# 中&#xff0c;泛型委托的定义方式与普通委托类似…

虚拟化技术

什么是虚拟化 虚拟化&#xff1a;将应用程序和系统内核资源进行解耦&#xff0c;以操作系统级别进行隔离&#xff0c;目的是提高资源利用率 虚拟化架构 寄居架构 本机(真实的操作系统) ---> 虚拟化产品--->虚拟化操作系统或软件 源生架构 裸金属 服务器 --->虚拟…

​面试经典150题——从前序与中序遍历序列构造二叉树

​ 1. 题目描述 2. 题目分析与解析 二叉树的前序、中序和后序遍历 二叉树的前序、中序和后序遍历是树的三种基本遍历方式&#xff0c;它们是通过不同的顺序来访问树中的节点的。 前序遍历&#xff08;Pre-order traversal&#xff09;&#xff1a; 访问根节点 前序遍历左子树…

Day 31 贪心算法理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

贪心算法理论基础 ​ 贪心算法的本质&#xff1a;选择每一个阶段的局部最优&#xff0c;从而达到系统的整体最优&#xff1b; ​ 贪心的套路就是没有套路&#xff0c;最好的策略就是举反例&#xff0c;因为大多数时候并不要求严格证明&#xff0c;只需要得到普遍性结论即可&a…