题解 :

  1. 首先能够发现幸运数的取值总共有1023种, 位数分别是1…10
    位数为10的只有4444444444.
    其余可以按照二进制排列组合(4, 7当成0,1看)构成幸运数
    共有

    ∑i=192i=210−2=1022

    \sum_{i = 1}^9 2^i = 2^{10} - 2 = 1022

  2. 记第i个幸运数为a[i], 那么幸运数位a[i]的数范围为(a[i - 1], a[i]]
  3. 预处理所有的幸运数
  4. 然后查找l, r在幸运数数组种中完全包含的区间, 直接处理:
    [l, r]包含某个区间(a[i - 1], a[i]]此区间内所有数字幸运数之和为
    a[i] * (a[i] - a[i - 1])然后处理两端的区间.
  5. 怎么处理幸运数呢, 注意到幸运数递增的, 且a[i]是第一个比a[i - 1]大的幸运数, 用串模拟下就可
  6. code:
/***Author : adrui*Language : C++*Created at 2017/03/27*
**/#include <iostream>
#include <map>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long ll;const int N = 1024;
ll a[N];
string toString(ll x){string s = "";while(x){s += x % 10 + '0';x /= 10;}return s;
}
ll ch(string s){/**转整数*///cout << s << endl;ll res = 0;for(int i = s.length() - 1; i >= 0; --i)res = 10 * res + s[i] - '0';return res;
}
ll cal(ll x){string s = toString(x);/**逆向串*///cout << s << endl;int f = 0, len = s.length();for(int i = 0; i < len - 1; ++i){if(s[i] < '7') {s[i] = '7', f = 1;break;}else s[i] = '4', ++s[i + 1];}if(!f)if(s[len - 1] < '7') s[len - 1] = '7';else {s[len - 1] = '4'; return ch(s + "4");}return ch(s);
}void init(){/**预处理幸运数*/a[0] = 0;a[1] = 4;a[2] = 7;for(int i = 3; i < N; ++i){//cout <<a[i-1] << endl;a[i] = cal(a[i - 1]);/**求a[i], 没打表意识。*///cout << ":"<<a[i] << endl;// cout << a[i] << endl;}
}ll solve(ll l, ll r){ll res = 0, i;int pos1 = lower_bound(a, a + N, l) - a, pos2 = lower_bound(a, a + N, r) - a - 1;/**二分找l, r *///cout << pos1 << " " << pos2 << endl;if(pos1 <= pos2)/**l, r不在一个区间*/for(i = pos1 + 1; i <= pos2; ++i){/**处理中间*/res += (a[i] - a[i - 1]) * a[i];}res += (a[pos1] - l + 1) * a[pos1];/**两端*/res += (r - a[pos2]) * a[pos2 + 1];}else{/**l, r在同一个区间*/res += (r - l + 1) * a[pos2 + 1];}return res;
}
int main(){//freopen("in.txt", "r", stdin);init();int t;cin >> t;ll l, r;while(t--){cin >> l >> r;cout << solve(l, r) << endl;}return 0;
}

AHU-2017校赛现场赛 B 下一个幸运数相关推荐

  1. 鬼知道NOI会不会成为下一个奥数

    认真写作文不可能的,这辈子不可能认真写作文的. (月考,期末考,高考即将到达战场,真香警告) 以下应该成为原稿!!! 真.喜欢写感悟,但我感觉我可能把它写的有点商业化,商业化的文章不可能放的,所以我尽 ...

  2. hihoCoder - 1633(2017北京icpc现场赛-G题)

    题意:给你一个三角形的三个坐标,还有一张图,让你从图中的左下角走到右上角,左下角坐标是(0,0),每两点之间的长度是1,'.'代表能走,'#'代表不能走,并且每条路径不能碰到三角形内部,让你求最短路径 ...

  3. 2002下一个回文年_2002年美国数学竞赛amc8

    2002年美国数学竞赛AMC8 1.在一张纸上画一个圆与两条相异直线,问这样的图形最多可能会有( )几个交点. A.2 B.3 C.4 D.5 E.6 ( )个不同的方法. A.2 B.3 C.4 D ...

  4. 2018年 ACM/ICPC亚洲区域赛 青岛赛区现场赛 比赛总结

    首先祝贺自己收获了ACM生涯中的第二枚铜牌. 首先吐槽一下中石油: 周六早上来到中国石油大学,连个志愿者小姐姐都没看到.(但是看到了女装大佬).报完到之后发现教练少了一张午餐券(要不要这么粗心).为了 ...

  5. 2014ACM/ICPC亚洲区域赛牡丹江现场赛总结

    不知道怎样说起-- 感觉还没那个比赛的感觉呢?如今就结束了. 9号.10号的时候学校还评比国奖.励志奖啥的,由于要来比赛,所以那些事情队友的国奖不能答辩.自己的励志奖班里乱搞要投票,自己又不在,真是无 ...

  6. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

    http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...

  7. 2018 年 ACM-ICPC 焦作站现场赛感受

    今天下午四点半,ACM-ICPC国际大学生程序设计竞赛亚洲区域赛/焦作站圆满结束.首先,感谢河南理工大学给了我们这样的一个可以与国际接轨的平台,更要感谢王老师的辛苦付出. 弱校举办这么大型的比赛实属不 ...

  8. 2013年成都现场赛赛后总结

    过了一个礼拜才写总结,我实在是太懒了,不过也没办法,人总是有点懒的嘛.这次比赛坐了飞机过去,去的时候状态很好,到步的第一天晚上吃了个略丰盛的火锅,虽然我实际上是不停的装蛋炒饭吃饱的.那天晚上稍微做了下 ...

  9. 2016ACM/ICPC亚洲区大连站现场赛题解报告

    此文章可以使用目录功能哟↑(点击上方[+]) 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原本过的人数比较多的题结果重现过的变少了,而原本现场赛全场过的人最少的题重现做 ...

  10. 2011 ACM/ICPC 北京现场赛 B HouYi's secret

    周日起床后看见QQ群消息说 bupt上有半同步北京现场赛试题,就进入看了下题,一共读了两个题 A和B(因为这两个题目当时就都提交的很多) A题不会做,有限制的生成树的这类知识好像还没有接触过... B ...

最新文章

  1. pangilin 安装编译
  2. 1.MySQL与MongoDB的操作对比,以及区别
  3. 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
  4. 图解iPhone开发新手教程
  5. 门前异动监控、AI 人脸识别!360 发布新型智能门铃
  6. SpringBoot日志logback-spring.xml分环境
  7. ZOJ 1076 Gene Assembly
  8. 软件版本的GA、RC的具体含义
  9. 进击的巨人有趣表情包
  10. 怎么用计算机打出根号3,计算器根号3怎么打
  11. Word自动目录中包含公式如何去掉?
  12. sap se06和scc4
  13. 投影仪光源与亮度科普
  14. python程序员专用壁纸_配置最漂亮的PyCharm界面,Python程序员必备!
  15. 做直播能有多赚钱,Python告诉你
  16. 非常简单-Linux环境下(有公网IP)或虚拟主机的环境下如何做一个网站???
  17. Python基础详解(十四):2022-Pycharm最新版社区版安装教程
  18. android radiobutton 文字按钮的距离,android RadioButton 图片与文字间距问题
  19. 计算机科学与技术专业用英文版,计算机科学与技术专业专业英文简历模板
  20. 国外调查问卷可以赚钱吗?

热门文章

  1. 游百望山(记于17.09.05)
  2. 数学思维导图学习方法
  3. java 量化指标_SAR指标配合阶段高低价的量化交易策略
  4. 【UG】二次开发如何调试
  5. angular 万年历_jQuery实现的简单日历组件定义与用法示例
  6. 贪吃蛇_C语言_VS2019
  7. homotopy-同伦_拔剑-浆糊的传说_新浪博客
  8. python中data是什么意思_python中的data[:, :-1]和data[:, -1]什么意思?
  9. WEB基础之:CSS字体
  10. 美国林肯学院因遭勒索软件攻击后不堪重负被迫关闭