试题 历届真题 生物芯片【第五届】【决赛】【B组】

X博士正在研究一种生物芯片,其逻辑密集度、容量都远远高于普通的半导体芯片。

  博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮。

  这些光源的编号从 1 到 n,开始的时候所有光源都是关闭的。

  博士计划在芯片上执行如下动作:

  所有编号为2的倍数的光源操作一次,也就是把 2 4 6 8 ... 等序号光源打开

  所有编号为3的倍数的光源操作一次, 也就是对 3 6 9 ... 等序号光源操作,注意此时6号光源又关闭了。

  所有编号为4的倍数的光源操作一次。

  .....

  直到编号为 n 的倍数的光源操作一次。


  X博士想知道:经过这些操作后,某个区间中的哪些光源是点亮的。

输入格式

  3个用空格分开的整数:N L R (L<R<N<10^15) N表示光源数,L表示区间的左边界,R表示区间的右边界。

输出格式

  输出1个整数,表示经过所有操作后,[L,R] 区间中有多少个光源是点亮的。

  例如:

输入格式

  5 2 3
  程序应该输出:
  2

  再例如:

输入格式

  10 3 6
  程序应该输出:
  3

题解

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    long long int n,l,r,sum;
    cin>>n>>l>>r;
    sum=r-l+1;
    long long int ll=(int)(sqrt(l-1));
    long long int rr=(int)(sqrt(r));
    cout<<sum+ll-rr;
    return 0;
}

一道数学题,运用了完全平方数的因数个数是奇数这个规律

具体做法学习了这篇博客,分析得很清楚

第五届蓝桥杯决赛B组C/C++——生物芯片 - 云+社区 - 腾讯云

洛谷上有一道该规律的基本运用题:

P1876 开灯

题目背景

该题的题目是不是感到很眼熟呢?

事实上,如果你懂的方法,该题的代码简直不能再短。

但是如果你不懂得呢?那。。。(自己去想)

题目描述

首先所有的灯都是关的(注意是关!),编号为 11 的人走过来,把是 11 的倍数的灯全部打开,编号为 22 的人把是 22 的倍数的灯全部关上,编号为 33 的人又把是 33 的倍数的灯开的关上,关的开起来……直到第 NN 个人为止。

给定 NN,求 NN 轮之后,还有哪几盏是开着的。

输入格式

一个数 NN,表示灯的个数和操作的轮数。

输出格式

若干数,表示开着的电灯编号。

输入输出样例

输入 #1复制

5

输出 #1复制

1 4

说明/提示

【数据范围】

对于 100 \%100% 的数据,1 \le N \le 2^{40}1≤N≤240。

【其他说明】

数学题!

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
double blood =10,t;
int n,x,sum;
int main(){
  cin>>n;
  cout<<1;
  for(int i=2;i<=sqrt(n);i++)
  {
  	cout<<" "<<i*i;
  }
  return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值