Sweet Snippet 之 骑士金币问题

spring boot 集成cas(一) 服务端搭建 简单点就是统一服务认证,多个系统一次登录。俗称单点登录。 阅读详情

本文简述了骑士金币问题的两种实现方法

首先我们来看下什么是 骑士金币问题:

骑士金币问题

国王要用金币赏赐忠于他的骑士.骑士在就职的第一天得到一枚金币,接下来的两天(第二天和第三天)每天会得到两枚金币,接下来的三天(第四、五、六天)每天会得到三枚金币,接下来的四天(第七、八、九、十天)每天会得到四枚金币,这样的赏赐形式会一直持续下去,问题是给定一个天数(譬如第十天),求骑士将会获得的总的金币数量.

举个简单的例子,如果给定第十天(NNN = 10),那么骑士将会获得的总的金币数量(CCC)为:

C=1+2+2+3+3+3+4+4+4+4=1+22+32+42=30 C = 1 + 2 + 2 + 3 + 3 + 3 + 4 + 4 + 4 + 4 = 1 + 2^2 + 3^2 + 4 ^ 2 = 30 C=1+2+2+3+3+3+4+4+4+4=1+22+32+42=30

  • 循环实现

按照题意,我们直接以连续获得相同金币的天数为循环量来累加金币,当然还需要处理一下最后一轮循环天数不足的情况,代码大概是这个样子(Lua)

function golden_coins(target_days)
    local coins = 0
    local cur_coin = 1
    local days = 0
    
    while days + cur_coin <= target_days do
        coins = coins + cur_coin * cur_coin
        days = days + cur_coin
        cur_coin = cur_coin + 1
    end
    
    local remaining_days = target_days - days 
    coins = coins + cur_coin * remaining_days
    
    return coins
end

该实现方法的时间复杂度为 O(N)O(\sqrt{N})O(N​)

  • 公式实现

我们也可以直接使用公式来进行求解,主要是要了解以下两个公式:

S1=1+2+3+...+N=N(N+1)2S2=12+22+32+...+N2=N(N+1)(2N+1)6 S1 = 1 + 2 + 3 + ... + N = \frac{N(N + 1)}{2} \\ S2 = 1^2 + 2^2 + 3^2 + ... + N^2 = \frac{N(N + 1)(2N + 1)}{6} S1=1+2+3+...+N=2N(N+1)​S2=12+22+32+...+N2=6N(N+1)(2N+1)​

骑士金币问题可以认为是已知 S1S1S1 的数值,来求解 S2S2S2 的数值(当然,仍然要处理一下最后一轮循环天数不足的情况),代码大概是这个样子:

function golden_coins_v2(target_days)
    local sq_days = math.floor(0.5 * (-1 + math.sqrt(1 + 8 * target_days)))
    local coins = (sq_days * (sq_days + 1) * (2 * sq_days + 1)) / 6
    local remaining_days = target_days - sq_days * (sq_days + 1) * 0.5
    coins = coins + (sq_days + 1) * remaining_days
    return coins
end

该实现的时间复杂度为 O(1)O(1)O(1)

【以太网硬件九】1000base-X是什么? 简要描述1000base-X物理层规范 阅读详情

相关推荐

代谢组学数据分析实战:用R语言从PCA、PLS-DA到OPLS-DA一步步搞定(附代码)

本文详细介绍了使用R语言进行代谢组学数据分析的全流程,从数据预处理到PCA、PLS-DA和OPLS-DA模型构建与验证。通过实际案例和代码示例,帮助研究者掌握关键分析技术,提升数据解读能力,特别适合生命科学领域的研究人员。

weixin_28689507的博客 133

C++描述 国王给骑士发放金币 ||

C++描述 国王给骑士发放金币 ||

weixin_46803686的博客 5749

Windows 下安装 Hermes Agent 完整教程(含踩坑记录)

不支持原生 Windows,必须通过 WSL2 (Windows Subsystem for Linux 2) 运行。WSL2 是 Windows 内置的 Linux 兼容层,可以在 Windows 上运行完整的 Linux 环境。

weixin_50191542的博客 4272

【PTA 7-11】骑士的金币

                               7-11 骑士的金币 (15 分) 国王用金币赏赐忠于他的骑士。骑士在就职的第一天得到一枚金币。接下来的两天(第二天和第三天)每天得到两枚金币。接下来的三天(第四、五、六天)每天得到三枚金币。接下来的四天(第七、八、九、十天)每天得到四枚金币。这样的赏赐形式一直延续:即连续N天骑士每天都得到N枚金币后,连续N+1天每天都将得到N+1枚...

Xylon的博客 3995

如何判断一个程序员的技术比你强?

技术大佬与普通程序员之间存在明显的认知差异:前者善于将复杂问题抽象为经典计算机科学问题,用声明式代码替代过程式逻辑;对异常和边界条件极度敏感,具备系统化的排查方法论;代码追求高可读性而非炫技,且执着于底层原理研究。这种技术压制体现在解决问题的确定性上——通过扎实的理论功底和工程直觉,快速定位问题本质,而非依赖试错或搜索。真正的技术实力源于对底层逻辑的深刻理解和对系统稳定性的敬畏。

wldtzzming的专栏 1088

骚戴笔记公告

骚戴笔记公告

我从不打没有准备的仗! 2万+

7-7 国王的金币 (10 分)

国王将金币作为工资,发放给忠诚的骑士。 第1天,骑士收到1枚金币,1 之后两天,每天收到2枚金币,1 2 2 之后3天每天收到3枚金币…….。1 2 2 3 3 3 这种工资发放模式一直延续。 求给定天数,计算一个骑士获得的金币。 输入格式: 输入发金币的天数 输出格式: 输出获得的金币总数 输入样例: 在这里给出一组输入。例如: 2 结尾无空行 输出样例: 在这里给出相应的输出。例如: 3 结尾无空行 #include<stdio.h> #includ

qq_62781214的博客 3078

嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)

本文提供uC/OS-III实时操作系统的完整移植指南,涵盖源码配置、工程搭建到任务调度的全流程。针对移植中的常见编译错误,给出关键修改方案(如中断重定义、配置使能等),附已验证的工程源码,通过LED任务实验验证稳定性,帮助开发者高效完成移植。适合嵌入式工程师及RTOS学习者参考。

Bit_Dong的博客 2472

C语言 金币问题

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

2301_76445610的博客 5154

[23]-->变长SPI接口

然而,FPGA技术复杂,学习门槛较高,许多人(初学者或学生)在学习过程中面临诸多挑战。(1)模式0:SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 0,CPHA=0;(2)模式1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换,CPOL= 0,CPHA=1;(3)模式3:SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 1,CPHA=1;

m0_46498597的博客 178

置顶必读(1) | 《YOLOv26实战:从入门到深度优化》专栏导读与完整目录导航(持续更新中)

🏆 本文收录于 《YOLOv26实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现 YOLOv26 官方特性、核心改进、多任务支持、部署优化与行业落地,内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么用”,更讲“为什么这样设计、如何真正落地到项目中”。

**My Coding Family** 9万+

#517. 【基础】骑士的金币(coin)

国王将金币作为奖励,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。一个整数(范围1到10000),表示天数。noip2015普及组复赛第1题。

XTX的博客 952

uniapp - 实现扫码功能自定义扫描二维码/条码界面+手电筒轻触照亮+扫码屏幕添加手动输入框,手机扫描二维码并跳转过程,调用手机原生摄像头进行扫码且自动识别执行事件(uniApp安卓苹果App端)

uniapp,app端,安卓app,苹果ios,uniapp扫码识别,二维码展示和扫码,uniapp如何实现扫码功能,uni-app实现扫码功能,二维码和一维码/条码扫描,UniApp实现扫描二维码,uniapp开发原生app页面的扫码功能,自定义扫码界面,uniapp怎么调用扫一扫功能,app自定义扫码界面,uniapp 自定义扫一扫页面,扫码手电筒功能,自定义扫描框,扫码报错怎么办,扫码黑屏,扫一扫摄像头黑屏,uniapp扫码原生插件,最新扫码组件,连续扫码,uniapp APP扫码,扫码后如何处理跳转

✅ 精选推荐文章 1万+

C++洛谷题解(37)——P2669

题号:P2669,题名:金币

None 3213

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【算法题】金币问题

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续 nn 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到 n+1 枚金币。输入格式 一个正整数 k,表示发放金币的天数。输出格式 一个正整数,即骑士收到的金币数。若每次金币都能持续完,则获得金币为n*n,否则是k*n(k为剩余天数)

qq_58137891的博客 831

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

金币问题解析

国王将金币作为工资,发放给忠诚的骑士。这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。第二种:k天对应到m周期的某一天,这时总金币数=第一周期的金币数到第m-1个周期金币数之和+(k-第一周期的天数到第(m-1)个周期的天数之和)*m。第二天和第三天,每天收到两枚金币。第四、五、六天,每天收到三枚金币。根据公式总天数=(首项+末项)乘以项数/2,即总数=(1+m)乘以m/2,总金币数=每个周期天数平方之和=m*(m+1)。

m0_72717671的博客 1550

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

金币

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

hqm793899006的博客 1183

国王给骑士金币问题

国王给为他出生入死的忠诚骑士分金币, 第一天给骑士1枚金币,随后两天每天给骑士2枚金币,接着的三天每天给3枚金币,以此类推,随后的n天给n枚金币 分析:可以用下图来表示国王每天分发的金币数量,第一天给骑士1枚金币(下图中的第一行),随后两天每天给骑士2枚金币(图中第二行),接着的三天每天给3枚金币(图中第三行)... 1 ...

weixin_55476708的博客 4958

C# 计算国王将金币作为工资,发放给忠诚的骑士

1+2+3+4+5+6+7+8+9+10+11+12+13+14=105>100,显然在14的那一组,金币就是1+2*2+3*3+...+13*13=sum,然后加上剩余的,1+2+3+4+5+6+7+8+9+10+11+12+13=(1+13)*13/2=91,sum=sum+(100-91)*14=945。我们将金币相同的看成一组,例如:122333444455555...,把1看成一组,22看成一组,333看成一组,4444看成一组,55555看成一组。请计算在前k天里,骑士一共获得了多少金币。

ftfmatlab的博客 3770

金币(题解)(非常简单)

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续 nn 天每天收到 n 枚金币后,骑士会在之后的连续 n+1 天里,每天收到n+1 枚金币。第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14 枚金币。一个正整数,即骑士收到的金币数。

hb_zhyu的博客 3695

骑士的金币

国王用金币赏赐忠于他的骑士。骑士在就职的第一天获得一枚金币。接下来的两天(第二天和第三天)每天获得两枚金币、接下来的第三天(第四、五、六天)每天获得三枚金币。接下来的四天(第七、8、九、十天)每天获得四枚金币。这样的赏赐形式一直延续:即连续N天骑士每天都获得N枚金币后,连续N+1天每天都将获得N+1枚金币,其中N为任一正整数。 编写一个程序,对给定的天数计算出骑士获得的金币总数(从任职的第一天开始)。 # include <iostream> using namespace std; int m

qq_43470707的博客 1623

1969:【15NOIP普及组】金币

【题目描述】 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。 请计算在前K天里,骑士一共获得了多少金币。 【输入】 只有1行,包含一个正整数K,表示发放金币的天数。 【输出】 只有1行,包含一个正整数,即骑士收到的金币数。 【输入

cbh666888的博客 566

金币问题(求和问题)

先上题目: 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。 你需要编写一个程序,确定从第一天开始...

qq_46026740的博客 3533

国王发金币

国王发金币问题解法(2解法)

Goshalk_Fall的博客 499

C语言骑士与金币问题

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

m0_47532486的博客 1824

2015NOIP普及组 金币

第一天,骑士获得了1枚金币,第二天骑士获得了两枚金币(共3枚),第三天获得了2枚金币(共5枚),第四天获得了3枚金币(共8枚),第五天获得了3枚金币(共11枚),第六天获得了3枚金币(共14枚)

weixin_45497223的博客 598
上一篇: Sweet Snippet 之 PlayerPrefs for UE4
下一篇: UE4 微笔记 之 调整网格材质参数
tkokof1
tkokof1 领域专家: 游戏开发技术领域 领域专家: 游戏开发技术领域
博客等级 码龄18年 368粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值