济南学习 Day 4 T1 pm
幸运数字(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。
/*
代码太长,copy from other's
容斥原理
对于1~x中,ans=x/3+x/5+x/7-x/15-x/21-x/35+x/105
注意高精度时应该先把该加的都加上,在进行减法,这样可以避免出现负数。
*/
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 200
using namespace std;
char s[N];int a1[N],b1[N],c1[N];
struct node
{
int a[N],len;
void clear()
{
memset(a,,sizeof(a));len=;
}
};node s1,s2,ans;
node jia(node x,node y)
{
node c;c.clear();
memset(a1,,sizeof(a1));
memset(b1,,sizeof(b1));
memset(c1,,sizeof(c1));
for(int i=;i<=x.len;i++)a1[i]=x.a[x.len-i+];
for(int i=;i<=y.len;i++)b1[i]=y.a[y.len-i+];
int len=max(x.len,y.len);
for(int i=;i<=len;i++)
{
c1[i]+=a1[i]+b1[i];
c1[i+]+=c1[i]/;
c1[i]%=;
}
if(c1[len+])len++;
c.len=len;
for(int i=len;i>=;i--)c.a[i]=c1[len-i+];
return c;
}
node jian(node x,node y)
{
node c;c.clear();
memset(a1,,sizeof(a1));
memset(b1,,sizeof(b1));
memset(c1,,sizeof(c1));
for(int i=;i<=x.len;i++)a1[i]=x.a[x.len-i+];
for(int i=;i<=y.len;i++)b1[i]=y.a[y.len-i+];
int len=max(x.len,y.len);
for(int i=;i<=len;i++)
{
if(a1[i]>=b1[i])c1[i]=a1[i]-b1[i];
else
{
c1[i]=a1[i]+-b1[i];
a1[i+]--;
}
}
int p=len;
while(c1[p]==)p--;
for(int i=p;i>=;i--)c.a[++c.len]=c1[i];
return c;
}
node chu(node x,int b)
{
node c;c.clear();
memset(a1,,sizeof(a1));
int xx=;
for(int i=;i<=x.len;i++)
{
a1[i]=(xx*+x.a[i])/b;
xx=xx*+x.a[i]-a1[i]*b;
}
int len=;
while(!a1[len]&&len)len++;
for(int i=len;i<=x.len;i++)
c.a[++c.len]=a1[i];
return c;
}
void init()
{
s1.a[s1.len]--;
for(int i=s1.len;i>=;i--)
{
if(s1.a[i]>=)break;
else
{
s1.a[i]+=;
s1.a[i-]--;
}
}
if(!s1.a[])
{
s1.len--;
for(int i=;i<=s1.len;i++)
s1.a[i]=s1.a[i+];
}
}
int main()
{
//freopen("number.in","r",stdin);
//freopen("number.out","w",stdout);
cin>>s;s1.len=strlen(s);
for(int i=;i<=s1.len;i++)s1.a[i]=s[i-]-'';
cin>>s;s2.len=strlen(s);
for(int i=;i<=s2.len;i++)s2.a[i]=s[i-]-'';
init();
ans=chu(s2,);
ans=jia(ans,chu(s2,));
ans=jia(ans,chu(s2,));
ans=jia(ans,chu(s2,));
ans=jia(ans,chu(s1,));
ans=jia(ans,chu(s1,));
ans=jia(ans,chu(s1,));
ans=jian(ans,chu(s2,));
ans=jian(ans,chu(s2,));
ans=jian(ans,chu(s2,));
ans=jian(ans,chu(s1,));
ans=jian(ans,chu(s1,));
ans=jian(ans,chu(s1,));
ans=jian(ans,chu(s1,));
for(int i=;i<=ans.len;i++)
printf("%d",ans.a[i]);
return ;
}
思路:容斥原理ans=(r/3+r/5+r/7-r/15-r/35-r/21+r/105)-((l-1)/3+(l-1)/5+(l-1)/7-(l-1)/15-(l-1)/35-(l-1)/21+(l-1)/105)
济南学习 Day 4 T1 pm的更多相关文章
- 济南学习 Day 5 T1 pm
欧拉函数(phi)题目描述: 已知(N),求phi(N). 输入说明: 正整数N. 输出说明: 输出phi(N). 样例输入: 8 样例输出: 4 数据范围: 对于20%的数据,N<=10^5 ...
- 济南学习 Day 3 T1 pm
巧克力棒(chocolate)Time Limit:1000ms Memory Limit:64MB题目描述LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去.具体地,这根巧克 ...
- 济南学习 Day 4 T1 am
完美的序列(sequence)Time Limit:1000ms Memory Limit:64MB题目描述LYK 认为一个完美的序列要满足这样的条件:对于任意两个位置上的数都不相同.然而并不是所有的 ...
- 济南学习 Day 3 T3 pm
仙人掌(cactus)Time Limit:1000ms Memory Limit:64MB题目描述LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果. ...
- 济南学习 Day 3 T2 pm
LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB题目描述LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在(n, ...
- 济南学习 Day 3 T1 am
NP(np)Time Limit:1000ms Memory Limit:64MB题目描述LYK 喜欢研究一些比较困难的问题,比如 np 问题.这次它又遇到一个棘手的 np 问题.问题是这个样子的:有 ...
- 济南学习 Day 2 T3 pm
它[问题描述]N个人坐成一圈,其中第K个人拿着一个球.每次每个人会以一定的概率向左边的人和右边的人传球.当所有人都拿到过球之后,最后一个拿到球的人即为胜者.求第N个人获胜的概率. (所有人按照编号逆时 ...
- 济南学习 Day 2 T2 pm
她[问题描述]给你L,R,S,M,求满足L≤ (S × x) mod M ≤ R最小的正整数 X.[输入格式]第一行一个数T代表数据组数.接下来一行每行四个数代表该组数据的L,R,S,M.[输出格式] ...
- 2016.10.30 济南学习 Day2 下午 T1
他 [问题描述] 一张长度为N的纸带,我们可以从左至右编号为0 − N(纸带最左端标号为 0).现在有M次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行 ...
随机推荐
- Flex4+Spring3+Hibernate3+BlazeDS整合笔记
普通Java Web工程流行使用ssh框架,而当前台使用Flex制作的时候,后台就不需要用Struts了,通过使用BlazeDS远程方法调用即可. 首先,新建Java Web工程,然后添加Flex项目 ...
- 虚拟文件系统VFS
Linux的文件系统是由虚拟文件系统作为媒介搭建起来的,虚拟文件系统VFS(Virtual File System)是Linux内核层实现的一种架构,为用户空间提供统一的文件操作接口.它在内核内部为不 ...
- 表ADT
表一般不用简单数组来实现,通常将其实现为链表.在链表中要不要使用表头则属于个人兴趣问题.在下面的例程中我们都使用表头. 按照C的约定,作为类型的List(表)和Position(位置)以及函数的原型都 ...
- SMO优化算法(Sequential minimal optimization)
原文:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html SMO算法由Microsoft Research的John C. ...
- PCA MATLAB
之前princomp函数还可以正常使用,但是今天突然不能使了!总是显示错误使用 pca输入参数太多. 出错 princomp (line 29) [varargout{1:nargout}]=p ...
- 纯css3实现的动画加载条
之前大大家分享了很多款加载条.今天给大家带来一款纯css3实现的动画加载条. 这款加载条适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8 ...
- PHP抓取网络数据的6种常见方法
http://www.nowamagic.net/academy/detail/12220245 http://www.nowamagic.net/academy/detail/12220245
- Topology: The Architecture of Distributed Systems--reference
reference:http://blog.couchbase.com/topology-architecture-distributed-systems You can’t judge a book ...
- The Kernel Newbie Corner: Kernel Debugging with proc "Sequence" Files--Part 3
转载:https://www.linux.com/learn/linux-career-center/44184-the-kernel-newbie-corner-kernel-debugging-w ...
- 分治法(一)(zt)
这篇文章将讨论: 1) 分治策略的思想和理论 2) 几个分治策略的例子:合并排序,快速排序,折半查找,二叉遍历树及其相关特性. 说明:这几个例子在前面都写过了,这里又拿出来,从算法设计的策略的角度把它 ...