幸运数字(number)
幸运数字(number)
Time Limit:1000ms Memory Limit:64MB
【题目描述】
LYK最近运气很差,例如在NOIP初赛中仅仅考了90分,刚刚卡进复赛,于是它决定使用一些方法来增加自己的运气值。它觉得,通过收集幸运数字可以快速的增加它的RP值。它给幸运数字下了一个定义:如果一个数x能被3整除或被5整除或被7整除,则这个数为幸运数字。于是它想让你帮帮它在L~R中存在多少幸运数字。
【输入格式】(number.in)
第一行两个数L,R。
【输出格式】(number.out)
一个数表示答案。
【输入样例】
10 15
【输出样例】
4
【数据范围】
对于50%的数据1<=L<=R<=10^5。
对于60%的数据1<=L<=R<=10^9。
对于80%的数据1<=L<=R<=10^18。
对于90%的数据1<=L<=R<=10^100。
对于另外10%的数据L=1,1<=R<=10^100。
对于100%的数据L,R没有前导0。
【题目分析】
从L到R中能被3 5 7整除的数字,那就算一下这个区间:3的倍数+5的倍数+7的倍数-15的倍数-35的倍数-21的倍数+105的倍数(容斥原理),要注意计算L之内的数的个数时,L不能算在内(跟 前缀和是同样的原理)
我们会发现后面还有两组数据的R<=10^100T_T ,高精,弃了。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
long long l,r;
int main()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
scanf("%I64d%I64d",&l,&r);
l--;
long long ans1=l/+l/+l/-l/-l/-l/+l/;
long long ans2=r/+r/+r/-r/-r/-r/+r/;
cout << ans2-ans1;
fclose(stdin);fclose(stdout);
return ;
}
蒟蒻80
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
char s1[],s2[];
int S1[],S2[],len1,len2,s[],S[],i;
void pl(int *a,int *b)
{
for (int i=a[]+; i<=b[]; i++) a[i]=;
for (int i=; i<=b[]; i++) a[i]+=b[i];
a[]=max(a[],b[]);
for (int i=; i<a[]; i++) if (a[i]>=) {a[i+]++; a[i]-=;}
if (a[a[]]>=) {a[a[]+]=; a[a[]]-=; a[]++;}
}
void mn(int *a,int *b)
{
for (int i=a[]+; i<=b[]; i++) a[i]=;
for (int i=; i<=b[]; i++) a[i]-=b[i];
for (int i=; i<a[]; i++)
if (a[i]<) {a[i]+=; a[i+]--;}
while (a[]> && a[a[]]==) a[]--;
}
void work(int *a,int b,int *c)
{
for (int i=; i<=a[]; i++) c[i]=a[i];
for (int i=a[]; i>=; i--)
{
c[i-]+=c[i]%b*;
c[i]/=b;
}
c[]=a[];
while (c[]> && c[c[]]==) c[]--;
}
int main()
{
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
scanf("%s",s1);
scanf("%s",s2);
len1=strlen(s1);
len2=strlen(s2);
for (i=; i<=len1; i++) S1[len1-i+]=s1[i-]-'';
S1[]=len1;
for (i=; i<=len2; i++) S2[len2-i+]=s2[i-]-'';
S2[]=len2;
work(S2,,s);
work(S2,,S);
pl(s,S);
work(S2,,S);
pl(s,S);
work(S2,,S);
mn(s,S);
work(S2,,S);
mn(s,S);
work(S2,,S);
mn(s,S);
work(S2,,S);
pl(s,S);
S[]=; S[]=;
mn(S1,S);
work(S1,,S);
pl(s,S);
work(S1,,S);
pl(s,S);
work(S1,,S);
pl(s,S);
work(S1,,S);
mn(s,S);
work(S1,,S);
mn(s,S);
work(S1,,S);
mn(s,S);
work(S1,,S);
mn(s,S);
for (i=s[]; i>=; i--) cout<<s[i];
return ;
}
std的话是长这个样子的
幸运数字(number)的更多相关文章
- 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字
美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...
- 【BZOJ 1853】 1853: [Scoi2010]幸运数字 (容斥原理)
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2472 Solved: 911 Description 在中国 ...
- BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】
BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...
- BZOJ 1853 【Scoi2010】 幸运数字
Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认 为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,8 ...
- BZOJ 4568 幸运数字
题目传送门 4568: [Scoi2016]幸运数字 Time Limit: 60 Sec Memory Limit: 256 MB Description A 国共有 n 座城市,这些城市由 n-1 ...
- BZOJ 1853: [Scoi2010]幸运数字
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 2117 Solved: 779[Submit][Status] ...
- 【BZOJ-4568】幸运数字 树链剖分 + 线性基合并
4568: [Scoi2016]幸运数字 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 238 Solved: 113[Submit][Status ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- BZOJ1853 [Scoi2010]幸运数字
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
随机推荐
- each实现原理
<script> function isEach(arr, callback) { for (var i in arr) { callback(i, arr[i]); } }; funct ...
- struts配置通配符*来匹配方法,实现动态调用
01:web.xml中配置,启动struts2 <?xml version="1.0" encoding="UTF-8"?> <web-app ...
- paper 92:Lena与图像处理
如果你是个数字图像处理技术的研究人员,或这方面的工程师, 想必对这位戴有羽状帽饰的美女不会感觉陌生.我第一次在国际知名的学术性刊物上见到这位美女时,不禁叹为天人,毕竟在这样严肃的学术期刊上,还从未出现 ...
- Mysql 修改字段长度、修改列名、新增列
alter table 表名 modify column 字段名 类型; 例如 数据库中user表 name字段是varchar(30) 可以用 ) ; --修改字段长度 )--修改表列名 ); -- ...
- 整理的java的日期DateUtil
package cn.knet.data.untils; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...
- Mysql索引总结(二)
在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表: ) NOT NULL ); 在查找username="admin"的记录 SELECT * ...
- HTML输入框点击内容消失
在input标签中这样写 type='text' onfocus='if(this.value=='请输入内容以搜索') this.value=''' onblur='if(this.value==' ...
- 关闭微软对win10的推送
找到windows中安装的更新,卸载 KB3035583 这个更新即可
- [转]编译Android源代码常见错误解决办法
1. 编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when ...
- innodb的锁到底占用多少内存
举个简单的例子: CREATE TABLE `sample` ( `i` ) unsigned NOT NULL auto_increment, `j` ) default NULL, PRIMARY ...