国王将金币作为工资,发放给忠诚的骑士。 问题 G: 金币

2023-10-27

题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。

请计算在前K天里,骑士一共获得了多少金币。
输入
输入只有1行,包含一个正整数K(1≤K≤10000),表示发放金币的天数。
输出
输出只有1行,包含一个正整数,即骑士收到的金币数。
样例输入
6
样例输出
14
提示
骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到 1+2+2+3+3+3=14 枚金币。

代码看着很简单,但是想了快十分钟。

#include <iostream>
#include <cstdio>
using namespace std;

int main()	{
	int i,j,sum=0,sumd=0,n,ans;
	scanf("%d",&n);
	for (i=1;;i++)	{
		sum+=i;
		if (sum>=n)	break;
	}
	i--;
	for (j=1;j<=i;j++)
		sumd+=j*j;
	ans=(1+i)*(n-(sum-i-1))+sumd;
	printf("%d\n",ans);
	return 0;
}

这是去年写的,只是贴了个代码,在这里解释一下。

定义“n完整递增”为连续的1个1,2个2,。。。,n个n的序列。例如,1,2,2是完整递增,1,2,2,3,3,3是完整递增,但1,2,以及1,2,2,3,3就不是完整递增。

题目中金币数可以分为两部分,就是前面的k完整递增,这是a部分,设其中size(a)个元素;以及后面的n-size(a)个相同的数字,均为k+1,这是b部分。求出a部分和b部分的和相加,就是答案。设a部分的和为sum(a),显然b部分的和sum(b)为(n-size(a))(k+1).

代码中的sum,可以视作上面的k完整递增序列中的数字个数。求sum=1+2+…+i,如果sum大于了n,则i加过头了1位,则i- -,则此时的i就是上面的k。

举个例子,输入8,则金币序列为1,2,2,3,3,3,4,4,则i为3,size(a)=6.

观察到k完整递增序列的和,可以简单地用1^2 + 2^2 + 3^2 +4^2 + … + k^2求得,则代码中的sumd即为i完整递增序列的元素和,就是sum(a)=sumd.

又由最初知,sum(b)=(n-size(a))*(k+1),此处k即现在i。但是注意,虽然之前i- -了,但是那是由于sum已经大于或者等于n了。此时sum仍未减去超过的部分。所以size(a)=sum-(i+1)。i+1,是因为当时sum加的数(也就是使sum大于等于n的数),比现在已经i- -的i要大1.

那么最后一个ans就解释清楚了,两个部分和sum(a)+sum(b)就行了。

现在看来这个题根本没必要想这么多,直接模拟就行了。下面是代码,简洁易懂,不注释了。

#include <bits/stdc++.h>
using namespace std;

int main()	{
	int n,sum=0,cnt=0;
	cin>>n;
	for (int i=1;i<=n;i++)	{
		for (int j=0;j<i;j++)	{
			sum+=i;
			cnt++;
			if (cnt==n) break;
		}
		if (cnt==n)	break;
	}
	cout<<sum<<endl;
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

国王将金币作为工资,发放给忠诚的骑士。 问题 G: 金币 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • Flutter 踩坑TabBar之TabController.addListener

    一 问题 之前提到TabBar的第二种实现方式 TabController是有坑的 问题 这个监听在点击切换tab的时候会回调两次 左右滑动切换tab正常调用一次 二 原因 点击切换tab的时候执行了一个动画效果 滑动切换的时候是没有的 在
  • 用JAVA写的一个自动化简单示例!

    public class lianxi public static void main String args throws InterruptedException System getProperty webDriver firefox
  • 2022-03-24 RK3566 MIPI屏 调试记录,panel-init-sequence 命令格式介绍

    一 Single channel mipi屏的硬件连接如下 二 根据屏厂给的初始化代码配置dts了 屏厂给的初始化代码分几种形式 这个文章里面RK PX30 android8 1的mipi屏调试 要不要买菜 的博客 CSDN博客 有比较详细
  • Ubuntu20.04(linux)离线安装nacos

    一 解压 1 首先local目录得有nacos server 2 0 4 tar gz包 切换目录cd usr local执行以下命令 tar zxvf nacos server 2 0 4 tar gz 二 创建nacos service
  • postgresql安装及常见错误处理

    postgresql安装及常见错误处理 一 安装说明 最近 由于业务需要 我抛弃了一直使用的mysql数据库 开始转向postgresql数据库 至于为什么选择postgresql 肯定是postgresql比mysql更强大 对于post
  • DECORATOR 装饰模式

    DECORATOR 装饰模式 对象结构性模式 1 意图 动态地给一个对象增加一些额外的职责 就增加功能来说 Decorator模式相比生成子类更为灵活 2 别名 包装器Wrapper 3 动机 有时我们希望给某对象而不是整个类添加一些功能
  • UnityVR--机械臂场景9-简单流水线应用1

    目录 一 整体介绍 二 准备工作 三 建立流水线 1 流水线包含的功能 2 流水线的代码结构 3 场景实现 4 测试运行 一 整体介绍 流水线是在空间和时间上合理安排和组织工艺线路的一种形式 它涉及到一种或多种生产设备 传感器 物料传输设备
  • 字符串 最长公共前缀

    LC 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀 返回空字符串 输入 strs flower flow flight 输出 fl swift 实现 class ViewController UIViewC
  • Google Chrome浏览器的Cookies文件找不到问题

    一 问题 有个每天执行的Python代码 会自动获取Google Chrome浏览器的Cookie来访问网站数据 具体相关实现思路 获取chrome80谷歌浏览器存储的指定网站Cookie数据方法详解 报错信息如下 Exception Co
  • Spring中的IOC容器必须要了解的一些概念

    文章目录 Spring中的IOC容器必须要了解的一些概念 a SpringIOC容器意义 b 怎样往Spring的IOC容器里面存储对象 c 怎样从SpringIOC容器中取对象 d 如果对象的属性是对象类型 那么要怎么给对象的属性赋值呢
  • macOS通过钥匙串访问找回WiFi密码

    如果您忘记了Mac电脑上的WiFi密码 可以通过钥匙串访问来找回它 具体步骤如下 1 打开Mac电脑的 启动台 然后在其他文件中找到 钥匙串访问 2 运行 钥匙串访问 应用程序 点击左侧的 系统 然后在右侧找到要查看的WiFi网络名称 如果
  • 蓝桥杯 试题 算法训练 拿金币 C++ 详解

    题目 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 前言 请先阅读以下两篇文章 https blog cs
  • SPI机制

    1 概念 spi全称为 Service Provider Interface 是JDK内置的一种服务提供发现机制 SPI是一种动态替换发现的机制 一种解耦非常优秀的思想 它是jdk提供给 服务提供厂商 或者 插件开发者 使用的接口 是一种扩
  • scrapy模拟点击

    lua click function main splash args assert splash go args url assert splash wait 0 5 local form splash select buttonId f
  • CDH配置显示计算机错误,CDH常见问题及解决方法(待续)

    启动CDH提示Deploy Client configuration fail 原因 依赖包perl未安装 yum install y perl 自用脚本中的yum操作所需依赖包 仅做参考 yum Cy install wget bind
  • 二维字符数组利用gets()函数输入

    举例 char a 10 81 for int i 0 i lt 10 i gets a i a是二维字符数组的数组名 相当于一维数组的指针 所以a i 就相当于指向第i个数组的指针 类型就相当于char 相当于字符串 转载于 https
  • Scrapy 如何正确发送 POST请求 获取到响应数据的三种写法

    问题描述 碰到了使用 data pageNo 1 pageSize 100 tableName equal projectType G1 publishTimeStart areaCode title publishTimeEnd mode
  • [安全攻防进阶篇] 三.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏

    从2019年7月开始 我来到了一个陌生的专业 网络空间安全 初入安全领域 是非常痛苦和难受的 要学的东西太多 涉及面太广 但好在自己通过分享100篇 网络安全自学 系列文章 艰难前行着 感恩这一年相识 相知 相趣的安全大佬和朋友们 如果写得
  • C++day4(拷贝赋值函数、匿名对象、友元、常成员函数和常对象、运算符重载)

    一 Xmind整理 二 上课笔记整理 1 day3作业订正 设计一个Per类 类中包含私有成员 姓名 年龄 指针成员身高 include
  • 国王将金币作为工资,发放给忠诚的骑士。 问题 G: 金币

    题目描述 国王将金币作为工资 发放给忠诚的骑士 第一天 骑士收到一枚金币 之后两天 第二天和第三天 每天收到两枚金币 之后三天 第四 五 六天 每天收到三枚金币 之后四天 第七 八 九 十天 每天收到四枚金币 这种工资发放模式会一直这样延续