文章目录

  • 题目描述
    • 输入
    • 数据范围
    • 输出
  • 想法
  • 参考
  • 实现

题目描述

乔治在梦中来到了一个神奇部落,这个部落的神树具有奇特的功能:对于每一位新朋友,都会获赠金币,而且金币的数量会随时间的延续而增加:
第1周,每天1枚金币;
第2周,每天2枚金币;
第3周,每天3枚金币;……
请问:至少多少天,乔治的金币数量达到n枚?

输入

一行,只有一个正整数n。

数据范围

对于30%的数据,n不超过2147483647;
对于100%的数据,n的位数不超过18。

输出

一行,一个整数,表示金币达到n枚所需的最少天数。

想法

数据量在1e19, 所以枚举1-1e19周?
我们发现, 利用等差数列求和估算一下, 最多为第1e10周
所以枚举 1-1e10周
暴力枚举是不行了, 所以采用二分答案的方式
先利用二分求出第m周, 又因为第m周每天增加m个金币
故可以利用这一特性, 枚举出哪一天
另要注意,数据量1e10, 开个(unsigned) long long, 仍要防止相乘溢出的情况

参考

二分查找模板参考Y总
关于由数据量估计算法复杂度和内容参考Y总

实现

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
typedef unsigned long long ull; // 18位的数据量
ull n, day, week;
bool check(ull week) // 形参一开始写成了int,  WA了好久, 长记性了
{// 等差数列求和公式化简后ull temp = 7*week*(week+1);if(temp >= n*2) return true;return false;
}
int binarySearch()
{ull left = 1, right = 1e10 + 9; // 不要傻乎乎的枚举1e19// .......voooooo(.代表不满足, o代表满足, 我们要的目标就是v  代表week)while(left < right) // 二分模板参考 Y总帖子: https://www.acwing.com/blog/content/31/{ull mid = (left + right) >> 1; // if(check(mid)) right = mid; // mid是满足情况的(不能丢掉!!!), 所以按[left, mid][mid+1,right]划分, 答案在[left,mid]中else left = mid + 1; // mid不满足情况, 答案在[mid+1,right]中}return left;
}
ull solve()
{ull day = week*7;ull sum = 0;// 求一下week对应的day, 这里分情况, 主要是怕/2时,丢失精度if(week%2 == 0) sum = week*7 + week/2*(week-1)*7;else sum = week*7 + (week-1)/2*week*7;// 枚举出满足情况的最小天数while(sum >= n){day--;sum -= week;}return day+1;
}
int main()
{cin >> n;week = binarySearch(); // 二分确定在哪一周day = solve(); // 枚举出哪一天, 最多枚举7次cout << day << endl; system("pause");return 0;
}

石油大 金币 二分答案相关推荐

  1. 计蒜客-联想专卖店大促销 (二分答案)

    题目 https://nanti.jisuanke.com/t/11214 题目描述 联想专卖店准备进行大促销,每位进店购买电脑的顾客都能获得奖品大礼包.一共有三种备选奖品:U盘.鼠标和机械键盘.一共 ...

  2. 石油大c语言答案,中国石油大学C语言答案

    int main() { char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}}; fun(w,a); ...

  3. 石油大c语言答案,中国石油大学C语言上机题答案(2013版)答案 最全最详细

    由2012级学霸学长期末复习整理,包含所有2012级c语言上机题题目级及答案.比网上的2012版更新!!! 中国石油大学c语言上机题答案大全(2013版) 最全最详细 1.1 Hello world. ...

  4. 第十九章:二分查找和二分答案

    二分查找 二分的思想在程序设计中有着广泛的应用,例如,排序算法中的快速排序.归并排序,数据结构中的二叉树.堆.线段树等.二分是一种常用且高效的算法,它的基本用途是在单调序列中进行查找和判定操作. 二分 ...

  5. 51Nod 1105 第K大的数 二分答案

    很典型的二分答案的题目 码着 #include<iostream> #include<algorithm> #include<string> #include< ...

  6. UVA1396 Most Distant Point from the Sea(AM - ICPC - Tokyo - 2007)(计算几何,半平面交 + 二分答案)

    整理的算法模板合集: ACM模板 题目传送门 见<训练指南>P279 很明显就是一个二分答案,它问的是最远的点,直接枚举因为这里都是double类型的数所以有无限个点,我们可以直接二分. ...

  7. 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)

    根据题意,我们要环上各点权值之和除以各边权值之和最大. 求最大答案,很明显可以使用二分答案.那么我们假设当前答案为 x,如果有更大的答案,那么方程就可以按下图转换: 也就是说如果有更大的答案,则有一个 ...

  8. 【基础算法】二分法(二分答案,二分查找),三分法,Dinkelbach算法,算法详解+例题剖析

    目录 一 . 二分法 二分搜索得要求: 二分查找步骤: 二分答案: 玄学的二分(二分答案) 二 . 三分法 例题 三.01分数规划问题相关算法与题目讲解(二分法与Dinkelbach算法) 一 . 二 ...

  9. hihoCoder 第136周 优化延迟(二分答案+手写堆)

    题目1 : 优化延迟 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho编写了一个处理数据包的程序.程序的输入是一个包含N个数据包的序列.每个数据包根据其重要程度不同 ...

最新文章

  1. cocos2d-x 弹出对话框
  2. PIC在线升级源码分析
  3. 【测绘程序设计】视距测量神器V1.0(附源程序)
  4. Jmeter----5.1 设置中文
  5. OpenCV_ cv2.imshow()
  6. 设计轻松应用素材 | 免抠png和图标上哪找
  7. [转]一个计算机专业学生几年的编程经验汇总
  8. Mac是否需要始终打开Time Machine驱动器?
  9. 点云边界提取方法总结
  10. 起底 Telegram 的发家史:Pavel Durov 的游戏才刚刚开始
  11. 主板4线风扇原理分析
  12. java实现图片文件上传下载_java实现文件的上传和下载
  13. 图书管理系统 (大一小白级别)
  14. 网易邮箱阻止一次非法访问解除方法
  15. linux dev queue xmit,dev_queue_xmi函数详解
  16. Docker image 是啥?
  17. 微信小程序实战教程1503---生成二维码
  18. 电脑为什么刚开机时网速挺快,可过一段时间后就很慢了?重启电脑就解决了问题。
  19. java从入门到精通API02
  20. JSP Taglib指令具有什么功能呢?

热门文章

  1. 【无题】小昭 の 念叨
  2. 中石油远程教育计算机作业第三次,中国石油大学计算机网络原理-第三次在线作业.docx...
  3. Windows下好用的轻量小程序(不定期更新)-20190521更新
  4. 破解WIFI密码,增强网络信号,带你畅玩网络世界
  5. 双系统启动菜单修复工具(NTBootAutofix)v2.5.7 绿色版
  6. Linux属于软件还是硬件,Linux系统教程_Linux系统软件处理和硬件处理的区别有什么不一样?...
  7. python中info的用法_使用Python中的data.info()显示所有信息
  8. MacBook Air 2013年中10.9版本升级到macOS Sierra
  9. 如何上传文件到IPFS
  10. 暗组工具箱 荐!!!