一、问题

  • 问题1

    场景:如果你未来的丈母娘要求你,第1天给她1分钱,第2天给2分钱,第3天给4分钱,以此类推,每天给前一天的2倍,给1个月(按30天)算就行。
    问:第30天给多少钱,总共给多少钱?

  • 问题2

    场景:如果有两份工作。
       第1份:第1天给你1分钱,第2天给你2分钱,第3天给你4分钱,以此类推,每天给前一天的2倍,给1个月(按30天)。
       第2份:一个月给你10万工资。
    问:哪份工资高?给你选择的话,你要第1份还是第2份?

二、相关热搜关键词

  • 1天1分钱翻倍累计到三十天后多少钱
  • 1天1分钱第二天乘2
  • 1天1分钱每天翻2倍30天一共多少钱
  • 1天1分钱2天2分钱3天4分钱
  • 1天1分钱2天2分钱,以2倍的倍数,一个月多少钱?
  • 0.01每天翻倍30天是多少
  • 0.01每天翻倍月底多少钱
  • 0.01每天翻一倍

三、解题方法

  问题1和问题2,其实计算是一样的,在这里博主为大家介绍三种不同的解题方法,分别为:通过while循环方式、power函数结合等比数列通项和求和公式、CTE公用表达式递归方式。大家可以参考学习一下博主写的脚本。

  1. 使用while循环方式
    1.1 直接看脚本和相关注释:

    /*
    作者:zhang502219048
    脚本来源:https://www.cnblogs.com/zhang502219048/p/11273639.html
    功能:通过while循环实现计算1分钱翻倍1个月的问题
    */
    --定义变量
    declare @a decimal(18,2) = 0.01, --@a为每天多少钱,初始为第1天0.01元
    @total decimal(18,2) = 0, --@total为截至当天总共多少钱
    @q int = 2, --@q为每天翻多少倍
    @n int = 2, --@n为第几天,而且是从第2天开始,因为是第2天才开始翻倍
    @nMax int = 30 --@nMax为最后翻倍的那天 --while循环,计算到第30天,当天多少钱和截至当天总共多少钱
    while @n <= @nMax --从第2天开始进行循环,直到第30天
    begin
    select @a = @a * @q --计算当天多少钱
    select @total = @total + @a --计算截至当天总共多少钱
    select @n = @n + 1 --循环变量@n加1天
    end --输出信息
    print '第30天多少钱:'
    print @a
    print '第1到30天总共多少钱:'
    print @total
    go

    1.2 脚本运行结果:

  2. 使用power函数和等比数列通项和求和公式
    2.1 先来看看等比数列通项公式和求和公式是怎样的,学习一下:

    2.2 直接看脚本和相关注释:

    /*
    作者:zhang502219048
    脚本来源:https://www.cnblogs.com/zhang502219048/p/11273639.html
    功能:通过power函数和等比数列通项和求和公式实现计算1分钱翻倍1个月的问题
    */
    --定义变量
    declare @a1 decimal(18,2) = 0.01, --@a1为第1天0.01元
    @a30 decimal(18,2), --@a30为第30天多少钱
    @total decimal(18,2), --@total为截至当天总共多少钱
    @q int = 2, --@q为每天翻多少倍
    @n int = 30 --@n为总共几天 --使用power函数结合等比数列通项公式,计算第30天多少钱
    select @a30 = @a1 * power(@q, @n - 1) --power(@q, @n - 1):使用power函数计算@q的@n - 1次方
    --使用等比数列求和公式,计算截至第30天总共多少钱
    select @total = (@a1 - @a30 * @q)/(1 - @q) --输出信息
    print '第30天多少钱:'
    print @a30
    print '第1到30天总共多少钱:'
    print @total
    go

    2.3 脚本运行结果:

  3. 使用CTE公用表达式递归方式
    3.1 直接看脚本和相关注释:

    /*
    作者:zhang502219048
    脚本来源:https://www.cnblogs.com/zhang502219048/p/11273639.html
    功能:通过CTE递归方式实现计算1分钱翻倍1个月的问题
    字段说明:DayX为第几天,MoneyX为当天多少钱,MoneyTotal为截至当天总共多少钱
    */ with cte_table(DayX, MoneyX, MoneyTotal) as
    (
    select 1
    , cast(0.01 as decimal(18,2)) --第1天当天0.01元
    , cast(0.01 as decimal(18,2)) --截至第1天当天总共0.01元
    union all
    select DayX + 1 --DayX加1天
    , cast(MoneyX * 2 as decimal(18,2)) --第DayX + 1天当天多少钱
    , cast(MoneyTotal + MoneyX * 2 as decimal(18,2)) --截至第DayX + 1天当天总共多少钱
    from cte_table
    where DayX < 30 --计算到第30天截止,结束递归
    )
    select * from cte_table --查看明细数据(DayX:第几天;MoneyX:当天多少钱;MoneyTotal:截至当天总共多少钱)
    go

    3.2 脚本运行结果:

四、问题结论

  • 第30天给5,368,709.12元(五百多万)!
  • 截至第30天总共给10,737,418.23元(一千多万)!

五、问题扩展

六、作者声明

sql server编写脚本求解第1天1分钱之后每天两倍持续一个月的等比数列问题的更多相关文章

  1. Python编程求解第1天1分钱之后每天两倍持续一个月的等比数列问题

    一.问题 问题1 场景:如果你未来的丈母娘要求你,第1天给她1分钱,第2天给2分钱,第3天给4分钱,以此类推,每天给前一天的2倍,给1个月(按30天)算就行.问:第30天给多少钱,总共给多少钱? 问题 ...

  2. Sql Server中查询当天,最近三天,本周,本月,最近一个月,本季度的数据的sql语句

    --当天: --最近三天: --本周: select * from T_news WHERE (DATEPART(wk, addtime) = DATEPART(wk, GETDATE())) AND ...

  3. sql server编写简洁四则运算表达式脚本实现计算批次功能(C#等其它编程语言也能直接用此通用表达式)

    问题: 在数据库编程开发中,有时会遇到数据量比较大的情况,如果直接大批量进行添加数据.修改数据.删除数据,就会是比较大的事务,事务日志也比较大,耗时久的话会对正常操作造成一定的阻塞.虽不至于达到删库跑 ...

  4. sql server编写通用脚本自动统计各表数据量心得

    工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zha ...

  5. 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解

    文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...

  6. ola.hallengren的SQL Server维护脚本

    ola.hallengren的SQL Server维护脚本 下载地址 http://files.cnblogs.com/files/lyhabc/ola.hallengrenMaintenanceSo ...

  7. 非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry 大牛

    非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry 大牛 Glenn Berry 大牛会对这个脚本持续更新 -- SQL Server 2012 Diagnost ...

  8. SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

    原文:SQL Server中的CLR编程--用.NET为SQL Server编写存储过程和函数 很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之 ...

  9. 非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry

    非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry Glenn Berry 曾承诺对这个脚本持续更新 -- SQL Server 2012 Diagnostic ...

随机推荐

  1. [TimLinux] docker CentOS7入门——服务(2)

    1. 服务含义 分布式应用中,应用的不同部分即称为“服务”,视频网站是一个分布式应用,包含有:数据的存储,视频的转码,前端展示等部分,对应的这些部分即称为相应的服务.docker平台中,定义.运行和扩 ...

  2. Koa - 初体验(写个接口)

    前言 不会node.js的前端不是一个好前端! 这几年node.js确实是越来越火了,好多公司对node.js都开始有要求.虽说前端不一定要会后端,但想要成为一个优秀的前端,node.js是必经之路. ...

  3. [Java并发] AQS抽象队列同步器源码解析--锁获取过程

    要深入了解java并发知识,AbstractQueuedSynchronizer(AQS)是必须要拿出来深入学习的,AQS可以说是贯穿了整个JUC并发包,例如ReentrantLock,CountDo ...

  4. 笔记||Python3之面向对象

    面向对象编程:简称OOP. 是一种程序设计思想.oop把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 在python中,所有数据类型都可以视为对象,也可以自定义对象.自定义的对象数据类 ...

  5. Orleans[NET Core 3.1] 学习笔记(四)( 1 )创建项目

    ClassRoom ClassRoom是一个练手demo,目的是为了能熟悉掌握Orleans的基本知识和使用方法,我会尽量在这个项目中加入更多的知识点,一边学一边练避免我看完文档就忘掉 创建项目 依旧 ...

  6. 大数据学习笔记——Hadoop编程之SequenceFile

    SequenceFile(Hadoop序列文件)基础知识与应用 上篇编程实战系列中本人介绍了基本的使用HDFS进行文件读写的方法,这一篇将承接上篇重点整理一下SequenceFile的相关知识及应用 ...

  7. 关于Manjaro+kde桌面Tim闪退的解决

    文章目录 关于Manjaro+kde桌面Tim闪退的解决 参考 Tim 我的问题 QQ 我的问题 WeChat 我的问题 本文结束 关于Manjaro+kde桌面Tim闪退的解决 参考 https:/ ...

  8. poj 1077 Eight (八数码问题——A*+cantor展开+奇偶剪枝)

    题目来源: http://poj.org/problem?id=1077 题目大意: 给你一个由1到8和x组成的3*3矩阵,x每次可以上下左右四个方向交换.求一条路径,得到12345678x这样的矩阵 ...

  9. SVN中怎样忽略当前文件不提交

    场景 在使用SVN进行版本管理时,有时一些自动生成的文件比如证书等,在每台电脑上都会不同,如果将其提交,则会冲突. 怎样将指定的文件或者指定文件后缀的文件忽略提交. 注: 博客主页: https:// ...

  10. jquery实现商品sku多属性选择(商品详情页)

    转载于https://blog.csdn.net/csdn924618338/article/details/51455595 实现效果 源码 <!DOCTYPE HTML> <ht ...