目录

  • 缘起
  • 题目
    • 描述
    • 输入
    • 输出
    • 样例1
    • 样例2
  • 题解
    • 解题思路(含公式证明)
    • AC代码
    • 其他

缘起

深圳大学电子协会的OJ上,有一道标难度为“低”的题《少了荔枝》。可是大家做了,觉得很棘手,要么无从下手,要么超了时间。我觉得很有意思,成功将时间复杂度降到了O(1)。

题目

描述

深大有一颗荔枝树,结了许多荔枝,但是有一个强迫症同学每天都去偷摘来吃,现在假设荔枝不会自行掉落:

第1天吃了1/3的量,紧接着又馋嘴吃多了1个

第2天吃了剩下的1/3的量,紧接着又馋嘴吃多了2个

第3天吃了剩下的1/3的量,紧接着又馋嘴吃多了3个

第n(n>0)天吃了剩下的1/3的量,紧接着又馋嘴吃多了n个,这时他发现只剩下m(m>0)颗荔枝在树上了,于是今后没再继续偷摘了

输入

输入偷摘的天数 n (0 < n < 100)

输出

输出最开始荔枝树上的荔枝数量的可能的最小值和在此情况下最后剩下的荔枝数量

样例1

输入

1

输出

3 1

样例2

输入

2

输出

15 4

题解

这道题不乏有暴力算法破解的猛男,可惜超时了;也不乏有设计了很漂亮的算法的高手,可惜咱学不来。可是咱高中学得还可以,可以用纯初等数学的方法求出通项公式,且听我娓娓道来。

解题思路(含公式证明)

我们不妨设原有荔枝 a 0 a_0 a0​颗,每天都被偷吃,第 n n n天被偷吃后,还剩下 a n a_n an​颗。
我们是可以得到如下关系的:

这个关系怎么来的呢?我把证明过程写在了一张纸上,很清楚。

然后对最后一个式子变形,就有了上述通式了。
其中注意到 a n > 0 a_n > 0 an​>0 且 a 0 a_0 a0​ 必须是整数,因此,要得到 a 0 a_0 a0​的最小值,可使 a n = 1 a_n = 1 an​=1开始,每次加让 a n a_n an​加1,直到 ( a n + 3 n − 6 ) m o d ( 2 n ) = 0 (a_n + 3n - 6) mod (2^n) = 0 (an​+3n−6)mod(2n)=0 时为止。通过此时的 a n a_n an​,结合公式,就很容易求出 a 0 a_0 a0​了。

AC代码

#include<iostream>
#include<cmath>
#define ull unsigned long long
using namespace std;int main() {//int n;ull n;cin >> n;ull an = 1;while ((an + 3 * n - 6) % ((ull)1 << n))an++;ull a0 = (an + 3 * n - 6) * pow(1.5, n) + 6;cout << a0 << " " << an << endl;return 0;
}

其他

需要考虑到代码中使用了pow()函数。该函数至少需要对数级复杂度的算法才可以实现。因此上文中对该算法O(1)的论述是不准确的。除此之外,还有两个严重的问题需要解决。

  1. 题中的n,数据规模可达100。但是本题样例较弱,因此上文中代码即可AC。但是如果要对更大的数据量提供支持,则需设计大数类。
  2. 从1开始向上试探最小值,是一种效率极其低下的方式。如有可能,也当进一步优化。

【深大电协OJ】少了荔枝相关推荐

  1. 【经验帖】20考研深大电通上岸师兄倾情奉献

    前言 一.初试篇 1. 高数: 2. 英语: 3. 政治: 4. 电通专业课 1)关于数电: 2)关于数信: 5. 考前一周建议: 二.结语: 前言 本篇博文来自我的一位师兄的经历,旨在为各位考生提供 ...

  2. 广州考生报深大计算机,抢破头!这所大学既不是985也不是211,为什么广东考生都想上?...

    深圳大学又被许多深大学子戏称为"深圳荔枝大学",因为每到荔枝丰收的季节,学校就会把采摘下来的荔枝统一派发给师生. 近年来,深大的发展势头如日中天,很多排名节节高升.比如,在泰晤士高 ...

  3. 保研推免全过程_从深大到中科院

    一.个人情况 本科深圳大学机电学院交通运输专业,然后想跨保计算机相关专业_(:з」∠)_   从9.19号确定拿到保研名额开始到28号国家系统开放9天极限操作拿到3个offer (电子科技大学.中科院 ...

  4. 【运营】各大电商七夕活动对比

     七夕要到了,各大电商都开始有所行动了.兴趣使然就研究了下几个电商的七夕活动,其中我最喜欢网易考拉海购和美丽说的,具体列表如下: 电商 类别 活动形式 分析和建议 淘宝 综合类C2C网上购物平台,纯粹 ...

  5. 深大转专业计算机,这所高校2020年1042人申请转专业!申请转出人数最多的竟是医学部...

    这所高校2020年1042人申请转专业!申请转出人数最多的竟是医学部 大学被录取到不喜欢的专业咋办?很显然,不少学生把希望寄托在转专业上.一般而言,被录取到冷门专业的学生,更希望通过转到热门专业,为将 ...

  6. 学渣考深大计算机,考深圳大学的研究生难吗?

    "从前有条龙,住在一座城,城旁边有座桥,桥旁边有所学校,学校里面有个人,就是本人 (•̀ω•́)✧ 本人是一名有理想,有文化,身材高大,集英俊和智慧于一身,集潇洒与风流为一体的----学渣. ...

  7. 深大博士后被双非高校院长拒收简历?博士毕业出路何在?

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送 本文来源:本文系募格课堂整合,参考来源:知乎.深圳大学高等研究院.百纳硕博等 近日,知乎 ...

  8. 【学术相关】深大博士后被双非高校院长拒收简历?博士毕业出路何在?

    来源:募格课堂整合,参考来源:知乎.深圳大学高等研究院.百纳硕博等 编辑:学妹 近日,知乎有这样一个话题: 一海外博士提问到,最近在某人才群看到,有深大博士后找教职投简历到某双非高校,不过被该校某院长 ...

  9. 和尚啃源码 之 RM深大开源RP_Infantry_Plus

    和尚啃源码 之 RM深大开源RP_Infantry_Plus 闲来垂钓碧溪上.这回遇到硬茬了,任务是啃完全套RM代码,想必是一场恶战,记录一下笔记: 一.万事万物从Readme开始 1.功能介绍 本套 ...

最新文章

  1. 朱哥研究出来的分页控件
  2. 面向对象的5个基本设计原则
  3. Error:(108) No resource identifier found for attribute #39;style#39; in package #39;android#39;
  4. 利用互斥体阻断想哭蠕虫,实现联网升级
  5. 分治3--黑白棋子的移动
  6. nginx 禁止访问配置,指定URL地址指定IP允许访问
  7. JVM学习笔记(三)------内存管理和垃圾回收【转】
  8. ueditor 文件服务器,ueditor-extend: 对百度UEditor编辑器做扩展,开放文件存储方法和获取远程文件列表方法,使其更灵活,更容易和独立的文件服务或者文件存储的云服务结合。...
  9. vestacp调整php.ini,VestaCP中roundcube的SMTP配置方法
  10. 问题 C: 所罗门王的宝藏
  11. 技术决胜年----谈谈我2018年的新观念新思想
  12. 在马克思手稿中有一道趣味的数学问题:一共有30个人,可能包括男人,女人和小孩。他们在一家饭馆吃饭共花了50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令。请问男人、女人和小孩各几人?
  13. 华为Mate40和iPhone12网络舆情传播数据分析报告
  14. 为什么wps数字前面有撇号_excel表格中数据前有撇号-Excel 如何去除数字前面的撇号...
  15. 利用Python you-get 下载网页视频
  16. c语言字符三维数组定义时赋值,c语言中三维数组的赋值顺序?
  17. 网工四年路:从小工厂到外资银行
  18. 使用VS2015 VC++第一步 写一个hello world程序
  19. SDUT_人活着系列
  20. C# CAD视图操作之缩放

热门文章

  1. Java项目实战:根据出生日期计算(判断)星座
  2. 如何把html和域名绑定,手把手教你解析和绑定域名
  3. 重t2加权是什么意思_都说“重装饰,轻装修”,是什么意思呢?一起来学学吧...
  4. 最强Linux命令,linux常用命令指南——查找文件我最强:find
  5. 生活娱乐 医院体检谷丙转氨酶偏高的会影响入职吗
  6. python堆_Python实现堆
  7. 重磅!新高考将编程纳入必学科目!这个省最先试行
  8. SAP_MB5B历史库存查询
  9. 大文件下载 解决方案
  10. 51nod 1130 阶乘长度 [Stirling公式]