链接:https://ac.nowcoder.com/acm/contest/634/B
来源:牛客网 给出n条线段,第i条线段的长度为ai,
每次可以从第i条线段的j位置跳到第i + 1条线段的j+1位置。
如果第i+1条线段长度不到j+,那么就会回到第i条线段的0位置,然后继续跳。
问从第i条线段的0位置跳到第n条线段需要跳多少次
为了减少输入量,a数组将由以下方式得到 unsigned int SA, SB, SC;
int mod;
unsigned int Rand(){
SA ^= SA << ;
SA ^= SA >> ;
SA ^= SA << ;
unsigned int t = SA;
SA = SB;
SB = SC;
SC ^= t ^ SA;
return SC;
}
int main() {
cin>>n>>mod>>SA>>SB>>SC;
for(int i = ;i <= n;++i) a[i] = Rand() % mod + ;
}
输入描述:
第一行两个正整数n,mod,表示一共有n条线段 第二行3个数字,分别为SA,SB,SC
输出描述:
一行一个数字,表示从每条线段跳到n的次数之和。 示例1
输入 输出 备注:
≤n≤×1e7
≤mod≤

题意:(如上,a数组非键盘输入得到,而是调用上列已给函数得到a数组)

思路: 如果线段之间跳跃中不存在归零的跳法,则ans=(1+2+3+.....(n-1))  =    n*(n-1) / 2,

  而真正的答案是ans=正常跳数+归零跳数。正常的跳数,已被求得,那么只需要再求出归零跳数即可。

  至于如何求归零跳数,逆向思维即可。

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<stack>
#include<algorithm>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f;
const double pi=acos(-1.0); ll n,a[];
unsigned int SA, SB, SC;
int mod;
unsigned int Rand(){
SA ^= SA << ;
SA ^= SA >> ;
SA ^= SA << ;
unsigned int t = SA;
SA = SB;
SB = SC;
SC ^= t ^ SA;
return SC;
}
int main() {
cin>>n>>mod>>SA>>SB>>SC;
for(int i = ;i <= n;++i) a[i] = Rand() % mod + ;
ll ans;
if (n&)
ans=(n-)/*n;
else
ans=n/*(n-);
ll tmp=a[n],cnt=;
for (int i=n-;i>=;i--){
tmp--;
tmp=min(a[i],tmp);
if (tmp==){
cnt=cnt+(i-); //第i线段以上的线段在这里都要执行归零跳法
tmp=a[i];
} }
cout<<ans+cnt<<endl;
return ;
}


链接:https://ac.nowcoder.com/acm/contest/634/C
来源:牛客网 题目描述
给出一个区间[L,R],求出[L,R]中孪生质数有多少对。
由于这是一个区间筛质数的模板题。所以小k不屑于去写。
所以出题人只好yy了另一道题。
定义k生互质数为满足y + k与y - k互质的数。
现在给出区间[L,R],你需要输出区间内k生互质数有多少对
我们说一对k生互质数在区间[L,R]内,当且仅当
y+k∈[L,R]
y+k∈[L,R]且y−k∈[L,R]
y−k∈[L,R]
输入描述:
一行三个数字L,R,k
输出描述:
一行一个数字表示区间[L,R]内的k生互质数的对数
示例1
输入 输出       说明
      分别为(,),(,)
示例2
输入 10
输出 4532 备注:
≤L,R≤1e18
≤L,R≤1e18
≤k≤1e13
题解:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#include<stack>
#include<algorithm>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x))
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f;
const double pi=acos(-1.0); ll l,r,k;
ll prime[];
bool check[];
int cnt;
void prim()
{
memset(check,false,sizeof(check));
check[]=check[]=true;
cnt=;
for (int i=;i<;i++){
if (!check[i])
prime[cnt++]=i;
for (int j=;j<cnt&&i*prime[j]<;j++){
check[i*prime[j]]=true;
if (i%prime[j]==)
break;
}
}
}
ll a[];
int main()
{
prim();
cin>>l>>r>>k;
ll p=;//质因数的个数
ll tmp=k<<;
/* for (int i=0;;i++){
if (tmp%prime[i]==0){
a[p++]=prime[i];
while (tmp%prime[i]==0){
tmp/=prime[i];
}
}
if (tmp<=1)
break;
}*/
for(int i=;i*i<=tmp;i++){
if(!(tmp%i)){
a[p++]=i;
while(!(tmp%i))
tmp/=i;
}
}
if(tmp>)
a[p++]=tmp; ll sum=;
tmp=<<p;// 存在p个质数,则有pow(2,p)种的组合数,
for (int i=;i<tmp;i++){
ll t=,s=; //t是质因数的公倍数,s则为选举的质因数的个数
for (int j=;j<p;j++){
if (i&(<<j)){
s++;
t*=a[j];
}
}
if(r/t>(l+*k-)/t){ //容斥 奇加偶减
if(s%)sum-=r/t-(l+*k-)/t;
else sum+=r/t-(l+*k-)/t;
}
}
cout<<sum<<endl;
return ;
}

 

牛客练习赛44 B题 (思维)的更多相关文章

  1. 牛客练习赛44 B 小y的线段 (思维)

    链接:https://ac.nowcoder.com/acm/contest/634/B 来源:牛客网 题目描述 给出n条线段,第i条线段的长度为a_ia i ​ ,每次可以从第i条线段的j位置跳到第 ...

  2. 牛客练习赛44 C 小y的质数 (数论,容斥定理)

    链接:https://ac.nowcoder.com/acm/contest/634/C 来源:牛客网 题目描述 给出一个区间[L,R],求出[L,R]中孪生质数有多少对. 由于这是一个区间筛质数的模 ...

  3. 牛客练习赛44 A 小y的序列 (模拟,细节)

    链接:https://ac.nowcoder.com/acm/contest/634/A 来源:牛客网 小y的序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  4. 牛客练习赛44 C:小y的质数

    链接:https://ac.nowcoder.com/acm/contest/634/C?tdsourcetag=s_pcqq_aiomsg 来源:牛客网 题目描述 给出一个区间\([L,R]\),求 ...

  5. 牛客练习赛38 D 题 出题人的手环 (离散化+树状数组求逆序对+前缀和)

    链接:https://ac.nowcoder.com/acm/contest/358/D来源:牛客网 出题人的手环 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...

  6. 牛客练习赛32 B题 Xor Path

    链接:https://ac.nowcoder.com/acm/contest/272/B来源:牛客网 题目描述 给定一棵n个点的树,每个点有权值.定义表示  到  的最短路径上,所有点的点权异或和. ...

  7. 牛客练习赛51 D题

    链接:https://ac.nowcoder.com/acm/contest/1083/D来源:牛客网 有一个草原可以用一个1~400的数轴表示.有n头羊和q个查询.每头羊的编号分别是1,2,3…n. ...

  8. 牛客练习赛44 B:小y的线段

    链接:https://ac.nowcoder.com/acm/contest/634/B 来源:牛客网 题目描述 给出\(n\)条线段,第\(i\)条线段的长度为\(a_i\),每次可以从第\(i\) ...

  9. 牛客练习赛53 B题调和级数

    https://ac.nowcoder.com/acm/contest/1114/B 这题时间卡的比较死,多了一个快速幂的logn就过不了这题. #include<bits/stdc++.h&g ...

随机推荐

  1. VMware Linux虚拟机与WIN7操作系统共享无线网络上网配置

    Linux虚拟机与WIN7操作系统共享无线网络上网配置 by:授客 QQ:1033553122 测试环境: CentOS-7-x86_64-DVD-1503-01.iso Vmware 9 实践操作: ...

  2. mui中图片手势缩放功能的实现

    MUI框架,要实现手势缩放图片,可以使用imageviewer组件来实现.代码很简单: 引入css: <link href="assets/css/mui.imageviewer.cs ...

  3. Android手机上,利用bat脚本模拟用户操作

    ………… 那么你就可以来看看这篇帖子了. 言归正传 利用bat脚本模拟用户操作,需要用到两点: ①就是adb命令了,adb命令可以用来模拟用户在手机上的操作 ②bat语言,就是批处理语言,主要用来进行 ...

  4. Python——Queue模块以及生产消费者模型

    1.了解Queue Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递 |queue.Qu ...

  5. 购物商城学习--第二讲(maven工程介绍)

    接下来第二讲介绍整体工程如何使用maven搭建的. 使用maven管理工程的好处: jar包的管理: 工程之间的依赖管理: 自动打包 maven常见打包方式:jar.war和pom三种.jar工程,是 ...

  6. JBoss 7 里一个EJB依赖其他jar的几种方式

    JBoss 7 与之前的版本有了巨大的变化,最核心的类的加载方式变了,有点类似OSGI那样搞起来了分模块的类加载方式,而不是以前的分层类加载.按以前的类加载方式,在加载树底下的那些类,总是能看到父节点 ...

  7. 微信小程序审核 出现85085 提交审核数量过多问题

    前段时间发布了一个新版本小程序(错误代码:85085,说明:submit audit reach limit, please try later hint: [OKYBha04570729]),由于我 ...

  8. elasticsearch报错之 memory locking requested for elasticsearch process but memory is not locked

    安装elasticsearch报错如下: [2019-01-14T03:57:16,453][ERROR][o.e.b.Bootstrap ] [ip-172-31-30-62.ec2.interna ...

  9. 第 15 章 位操作(invert4)

    /*------------------------------------ invert4.c -- 使用位操作显示二进制 ------------------------------------* ...

  10. beta冲刺————第五天(5/5=1)

    今天的主要内容是前后端的对接: 通过前几天的对接,我们发现后端传给前端内容是可以很完美的显示出来的,说明文章格式以及一些默认规则都是OK的. 然后就是前端从云服务器上面接受到文章的具体内容,在这一个环 ...