蓝桥杯+生物芯片


标题:生物芯片

    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
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。




由图中可以看出 当数值为完全平方数的时候 改位置为关闭状态!即求出区间内完全平方数的数量即为关闭状态的数量反之就是打开状态的数量!

代码如有问题请评论指出来!!


public class shengwu {
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		long n = sc.nextInt();
		long l = sc.nextInt();
		long r = sc.nextInt();
		long ans=r-l+1;
		long t=0;
		long ll=(long) Math.sqrt(l);
		long lr=(long) Math.sqrt(r)+1;
		for (long i = ll; i < lr; i++) {
			if (i*i >= l && i*i <= r ) {
				t++;
			}
		}
		System.out.println(ans-t);
	}
	
}
/*
 * 根据规律可以看出来 只有完全平方数 为关闭状态 ,求区间中 亮灯状态 可以求区间中 完全平方数
 * 的数量 ,即为闭灯数量,反之就是亮灯数量
 * 
 * 
 * */







蓝桥杯嵌入式开发板支持PWM输出,可以通过配置寄存器来实现。下面是一个简单的PWM输出的例子: ```c #include "stm32f10x.h" void PWM_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = 999; TIM_TimeBaseStructure.TIM_Prescaler = 71; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 500; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_Cmd(TIM3, ENABLE); } int main(void) { PWM_Init(); while (1) { } } ``` 上述代码中,我们使用了TIM3定时器来实现PWM输出。首先,我们需要初始化GPIO引脚,将其配置为复用推挽输出模式。然后,我们需要初始化TIM3定时器,设置其时钟分频、计数模式、计数周期等参数。最后,我们需要初始化TIM3的输出比较通道,设置其PWM模式、输出状态、占空比等参数。在初始化完成后,我们使能TIM3定时器,即可开始输出PWM波形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值