济南学习 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次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行 ...
随机推荐
- 虚拟机VMware 9安装苹果MAC OSX 10.8图文教程
前些天虚拟机VMware Workstation 9出来,相信大家都已经熟悉VM9了,至于MAC OSX 10.8系统,那也是出来一段时间了,本篇文章就是来讲解VMware Workstation 9 ...
- PHP定时执行任务的实现(转)
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $int ...
- 使用Visual Studio创建简单的自己定义Web Part 部件属性
使用Visual Studio创建简单的自己定义Web Part 部件属性 自己定义属性使用额外的选项和设置拓展你的Web part部件.本文主要解说怎样使用Visual Studio创建简单的自己定 ...
- 内存管理和@property的属性
内存管理和@property的属性 目录 对内存管理的理解 Objective C内存管理方式 内存的管理 对象的所有权和内存管理原则 合理解决内存管理带来的问题 自动释放池 @property的属性 ...
- IOPS
http://www.cnblogs.com/sink_cup/archive/2012/09/14/ssd_iops_sql_nosql.html http://www.techrepublic.c ...
- <QtEndian> - Endian Conversion Functions
The <QtEndian> header provides functions to convert between little and big endian representati ...
- Java最重要的21个技术点和知识点之JAVA面向对象
(二)Java最重要的21个技术点和知识点之JAVA面向对象 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的J ...
- SOA资料
实施: 基于J2EE体系架构搭建符合SOA架构的运营管理平台 成功经验: 携程旅行网在SOA架构方面的探索 SOA在互联网系统中的应用
- [ASP.Net]TableLayoutPanel的使用
以前都是使用Panel.没有用过其他容器类.郁闷,要控制界面的自适应真是麻烦.平常用一用dock.anchor差不多了,但是,更复杂的情景下,就没法了.例如一行有多个控件,有的要求跟据窗口缩放,只缩放 ...
- 通用权限底层研究:Web应用限制IP访问的功能实现
如果你的web应用受到恶意扫描或攻击,你会怎么处理呢?大多数时候从应用日志里可以看到恶意扫描或攻击,遇到此类情况,如有一个可以进行IP访问控制的功能就好些了. 现将在MVC下实现的一个IP访问限制功能 ...