蓝桥杯——生物芯片

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
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms

当时,拿到这道题的时候,下意识的就想去模拟,但是看到数据范围10^15,开数组开不到这麽大,如果去循环的话,有很容易超时,然后对这道题稍加分析,就可以获取到结果。

由题意得,所有光源的初始状态是关闭的,若要想使其最终是打开的状态,那么必须要经过奇数次这样的操作,而操作的次数其实就是光源的约数个数。因为没有”1的倍数进行的操作“,所以约数要减去1,即如果编号为n的光源,其有偶数个约数,那么最终这个光源是打开的。
已知完全平方数有奇数个约数,非完全平方数有偶数个约数。(因为如果一个数x不是完全平方数,那么其约数一定是成对出现的,即一定有偶数个约数;而完全平方数,除去哪偶数个约数外,还有一个完全平方根,那么“偶+1=奇“)
那么问题的答案就是给定区间[L,R]的非完全平方数的个数,区间[L,R]内的完全平方数的个数用A表示,非完全平方数的个数用B表示,则有B =(R-L+1) - A 。
对于给定的数M,[1,M]内的其完全平方数有(int)sqrt(M)。则A=(int)sqrt(R)-(int)sqrt(L-1)
最终问题的答案就是(R-L+1)-((long)sqrt(R)-(long)sqrt(L-1))

import java.util.Scanner;
public class Main {
    public static long N,L,R;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        N = in.nextLong();
        L = in.nextLong();
        R = in.nextLong();
        long sum = R - L + 1;//[L,R]区间共有多少个数
        long a = (long)(Math.sqrt(L-1));
        long b = (long)(Math.sqrt(R));
        System.out.println(sum-(b-a));
    }

}
### FPGA在蓝桥杯竞赛中的ADC转换实现 #### 使用FPGA进行ADC数据采集的设计思路 在嵌入式系统设计领域,现场可编程门阵列(FPGA)因其高度并行性和灵活性而成为处理高速模拟信号的理想平台[^1]。对于参加蓝桥杯这类电子设计类比赛的学生来说,掌握如何利用FPGA完成模数转换(ADC),是一项非常重要的技能。 #### 基于FPGA的ADC接口电路构建 为了使FPGA能够读取来自传感器或其他外部设备产生的连续变化电压值,在硬件层面通常会采用专用集成电路(ASIC)形式的ADC芯片来辅助工作。通过SPI/IIC等串行通信协议连接至FPGA开发板上,并编写相应的驱动程序以控制其正常运行以及获取采样后的离散数值[^2]。 ```verilog // Verilog代码片段展示简单的SPI Master模块用于配置ADC器件 module spi_master ( input wire clk, // 时钟输入 output reg sclk, // SPI时钟线输出 output reg mosi, // 主机发送/从机接收的数据线 inout wire miso, // 主机接收/从机发送的数据线 ... ); ... endmodule ``` #### 数据传输与处理流程概述 当ADC完成一次完整的量化过程之后,所得到的结果会被送回到FPGA内部存储器中等待进一步分析计算;此时可以运用Vivado HLS工具链快速搭建起高效的C/C++算法模型并通过综合编译转化为底层RTL级描述文件供后续仿真验证使用[^3]。 #### 实际案例分享——基于Zynq SoC平台的心电图监测仪项目 在一个具体的参赛作品里,团队成员选择了Xilinx Zynq系列SoC作为核心控制器,配合ADS1298高精度多通道生物医学ADC实现了对人体心电信号实时监控功能。此过程中不仅涉及到上述提到的各种技术要点的应用实践,还充分体现了跨学科知识融合所带来的创新价值所在[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值