题目意思大概是给你w,m,k三个数,让你从m开始找 m m+1 m+2 m+3...........m+m', 使得他们的权值之和不超过w,计算权值的方法如下S(n)·k
。 S(n)表示n有多少位数,让你计算出最多有多少个这样的数。

乍一眼看去,10^16如此大的数肯定不能暴力,然后稍微思考一下就可以找到规律了,规律如下。

1-10              有9个一位数

1-100            有9个一位数 有90个二位数

1-1000          有9个一位数 有90个二位数  有900个三位数

1-10000        有9个一位数 有90个二位数  有900个三位数  有9000个四位数

。。。。。。。。。。。。

那么1-n有多少个几位数很快就可以计算出来了,然后用二分法计算结果。代码如下

#include <stdio.h>
#include <iostream>
#define ll long long
#define inf 100000000000000000
//二分上界必须大于10^16,不然会出错 using namespace std; ll w, m, k; ll getans(ll x)
{
ll cmp = 10;
ll add = 9;
ll ans = 0;
ll sum = 0;
ll cnt = 1;
while (x >= cmp)
{
sum += add;
ans += add*cnt;
cnt++;
add *= 10;
cmp *= 10;
}
ans += (x - sum)*cnt;
return ans;
} inline ll getval(ll x)
{
return (getans(x)-getans(m-1));
} ll binarysearch(ll l, ll r, ll val)
{
if (l == r)
{
while (getval(l) > val)
l--;
return l;
}
ll mid = (l + r) >> 1;
if (getval(mid) < val)
return binarysearch(mid+1, r, val);
else
return binarysearch(l, mid, val);
} int main()
{
while (cin >> w >> m >> k)
{
ll t = binarysearch(m, inf, w/k);// 二分的第三个参数必须这样,不能在其他地方乘,不然也会溢出
if (t < m)
puts("0");
else
cout << t - m + 1 << endl;
}
return 0;
}

最新文章

  1. 领域驱动设计(DDD)部分核心概念的个人理解
  2. Hibernate+Struts2进行数据的修改
  3. HSDB
  4. Win7如何部署apache服务器(包括SSL设置)
  5. 模仿qq音乐播放字母效果
  6. [置顶] 老孟 DB2 V9.7 ESE(一)产品部署 基于centOS 6.4
  7. document.querySelectorAll() 与document.getElementTagName() 的区别
  8. django-rest-framework之请求与响应
  9. error:安装手电筒程序后在打开程序后报错:你的camera flashlight正在被其他程序占据
  10. SSH框架项目开发命名规范
  11. Zabbix常见触发器表达式
  12. 13行代码实现:Python实时视频采集(附源码)
  13. .net core Ocelot实现API网关并部署在docker中
  14. mysql之全球化和本地化:字符集、校对集、中文编码问题
  15. DHCP Server (推荐使用Windows)
  16. Maven Return code is: 401
  17. Shell脚本编程(一):初识shell script
  18. 在cygwin下创建的文件位于windows的哪个目录下?
  19. CURD插件(仿Django-admin版)
  20. php常用的安全过滤函数

热门文章

  1. 13 | 效率为王:脚本与数据的解耦 + Page Object模型
  2. Python开发【第八篇】: 网络编程
  3. 使用Appium做手机自动化录制问题
  4. [apue] 测试管道容量的一些疑问
  5. 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果
  6. UVALive 7037:The Problem Needs 3D Arrays(最大密度子图)
  7. Codeforces 348B:Apple Tree(DFS+LCM+思维)
  8. DStream转为DF的两种方式(突破map时元组22的限制)
  9. ASP.NET Core Web Api之JWT(一)
  10. Windows 10打开远程桌面的方法