幸运数字(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)的更多相关文章

  1. 2014.11.12模拟赛【美妙的数字】| vijos1904学姐的幸运数字

    美妙的数字(number.c/.cpp/.pas) 题目描述 黄巨大认为非负整数是美妙的,并且它的数值越小就越美妙.当然0是最美妙的啦. 现在他得到一串非负整数,对于每个数都可以选择先对它做二进制非运 ...

  2. 【BZOJ 1853】 1853: [Scoi2010]幸运数字 (容斥原理)

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2472  Solved: 911 Description 在中国 ...

  3. BZOJ1853 Scoi2010 幸运数字 【枚举+容斥】

    BZOJ1853 Scoi2010 幸运数字 Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认为,于是他定义自己的“幸运号码”是十进制表示中只包含数字6和8的那些号 ...

  4. BZOJ 1853 【Scoi2010】 幸运数字

    Description 在中国,很多人都把6和8视为是幸运数字!lxhgww也这样认 为,于是他定义自己的"幸运号码"是十进制表示中只包含数字6和8的那些号码,比如68,666,8 ...

  5. BZOJ 4568 幸运数字

    题目传送门 4568: [Scoi2016]幸运数字 Time Limit: 60 Sec Memory Limit: 256 MB Description A 国共有 n 座城市,这些城市由 n-1 ...

  6. BZOJ 1853: [Scoi2010]幸运数字

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2117  Solved: 779[Submit][Status] ...

  7. 【BZOJ-4568】幸运数字 树链剖分 + 线性基合并

    4568: [Scoi2016]幸运数字 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 238  Solved: 113[Submit][Status ...

  8. 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1817  Solved: 665[Submit][Status] ...

  9. BZOJ1853 [Scoi2010]幸运数字

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

随机推荐

  1. 。。。mkdir与mkdirs的区别。。。

    一直想知道他俩的区别,也一直忘记了,知道今天才没有放过这个机会! mkdir的用法是正创建一层目录,比如说在C盘下创建aa文件夹,c:\aa,这个aa是不存在的,这个话,是可以用mkdir创建的,但是 ...

  2. 将服务费用DIY到底----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十)[转]

    前一段时间,讲了一系列开发经理.实施经理.服务经理的工具箱:开发经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三) ,实施经理的工具箱--走出软件作坊:三五个人十来条枪 如何成 ...

  3. (一)MapReduce篇之InputFormat,InputSplit,RecordReader(转)

    平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class);来保证输入文件按 ...

  4. SQL关于apply的两种形式cross apply和outer apply(转载)

    SQL 关于apply的两种形式cross apply 和 outer apply   apply有两种形式: cross apply 和 outer apply   先看看语法:   <lef ...

  5. OpenStack 计算节点删除

    前提 计算节点中一个僵尸计算节点存在,而里面的CPU数目在总物理CPU中,导致认为当前能创建实例.而实际没有这么多资源. 其中node-11为僵尸节点. 原因 删除计算节点不能直接格式化该服务器,否则 ...

  6. TortoiseSVN,排除不想提交文件的方法(转)

    转自:tortoisesvnsubversionfilebuilddialoglist 下面是英文帮助: 利用TortoiseSVN的修改列表 功能可以实现,在新版本中TortoiseSVN特地预置了 ...

  7. android 学习随笔二十三(动画:Fragment )

    Fragment * 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容 * 在一个Activity中切换多个界面,每个界面就是一个Fragment* Fragmnen ...

  8. 网卡ifcfg-eth0配置

    ifcfg-ethx网卡配置 文件路径 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0     ...

  9. Linux驱动开发 -- 打开dev_dbg() 【转】

    转自:http://blog.chinaunix.net/uid-20672559-id-3383042.html linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函 ...

  10. 非常好!!!【从头开始写操作系统系列】实现一个-GDT(1)【转】

    转自:http://blog.csdn.net/luoyhang003/article/details/47338019 权声明:本文为博主原创文章,未经博主允许不得转载.(文章来源:http://b ...