2--小车问题

该程序解决了一个数学问题,其中甲步行与小车接送乙达到终点的时间相等。通过公式x=2as/(3a+b)计算出关键距离x,然后得出总时间t=x/a+(s-x)/b。代码使用C++编写,输入包括路程s和小车相对于甲的速度a和乙的速度b,输出是总时间。
摘要由CSDN通过智能技术生成

4.28

洛谷P1258 小车问题 

 
甲步行到终点的时间 和 车回头接乙再带乙到终点的时间 相等:
|__x__|____s-2x____|__x__| 则 x/a = (s-2x+s-x) / b;

解得x=2as/(3a+b);

那么时间t=x/a+(s-x)/b;

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
	double s,a,b;
	cin>>s>>a>>b;
	
	double x=(2*a*s)/(3*a+b);
	printf("%.6lf",x/a+(s-x)/b);
	
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是TI-RSLK循迹小车的代码: ```C++ #include <msp432p401r.h> #include <stdint.h> #define LEFT_FORWARD P2->OUT &= ~BIT4; P2->OUT |= BIT5 #define LEFT_REVERSE P2->OUT &= ~BIT5; P2->OUT |= BIT4 #define LEFT_STOP P2->OUT &= ~(BIT4 | BIT5) #define RIGHT_FORWARD P2->OUT &= ~BIT6; P2->OUT |= BIT7 #define RIGHT_REVERSE P2->OUT &= ~BIT7; P2->OUT |= BIT6 #define RIGHT_STOP P2->OUT &= ~(BIT6 | BIT7) #define BUTTON1 (P1->IN & BIT1) #define IR_THRESHOLD 15000 #define MAX_SPEED 25000 #define TURN_SPEED 20000 #define MIN_SPEED 10000 #define MAX_TURN_TIME 500000 volatile uint32_t left_speed, right_speed; volatile uint32_t left_count, right_count; volatile uint32_t last_left_count, last_right_count; volatile uint32_t left_turn_time, right_turn_time; volatile uint32_t count; void SysTick_Handler(void) { left_count = TIMER_A0->R; right_count = TIMER_A1->R; left_speed = (last_left_count - left_count) * 1000 / 33; right_speed = (last_right_count - right_count) * 1000 / 33; last_left_count = left_count; last_right_count = right_count; count++; } void delay(uint32_t time) { volatile uint32_t i; for (i = 0; i < time; i++); } void turn_left(void) { LEFT_REVERSE; RIGHT_FORWARD; delay(left_turn_time); LEFT_FORWARD; RIGHT_FORWARD; } void turn_right(void) { LEFT_FORWARD; RIGHT_REVERSE; delay(right_turn_time); LEFT_FORWARD; RIGHT_FORWARD; } int main(void) { WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; P1->SEL0 &= ~BIT1; P1->SEL1 &= ~BIT1; P1->DIR &= ~BIT1; P1->REN |= BIT1; P1->OUT |= BIT1; P2->DIR |= BIT4 | BIT5 | BIT6 | BIT7; P2->OUT &= ~(BIT4 | BIT5 | BIT6 | BIT7); SysTick_Config(SystemCoreClock / 1000); TIMER_A0->CTL = TIMER_A_CTL_SSEL__SMCLK | TIMER_A_CTL_MC__CONTINUOUS | TIMER_A_CTL_IE; TIMER_A0->CCTL[0] = TIMER_A_CCTLN_CM__NONE | TIMER_A_CCTLN_CCIS__CCIA | TIMER_A_CCTLN_CCIE; TIMER_A1->CTL = TIMER_A_CTL_SSEL__SMCLK | TIMER_A_CTL_MC__CONTINUOUS | TIMER_A_CTL_IE; TIMER_A1->CCTL[0] = TIMER_A_CCTLN_CM__NONE | TIMER_A_CCTLN_CCIS__CCIA | TIMER_A_CCTLN_CCIE; left_turn_time = MAX_TURN_TIME; right_turn_time = MAX_TURN_TIME; while (1) { if (BUTTON1 == 0) { while (BUTTON1 == 0); if (left_turn_time == MAX_TURN_TIME) { left_turn_time = MIN_SPEED; right_turn_time = TURN_SPEED; } else { left_turn_time = MAX_TURN_TIME; right_turn_time = MAX_TURN_TIME; } } if (count >= 100) { count = 0; if (left_speed > IR_THRESHOLD && right_speed > IR_THRESHOLD) { LEFT_FORWARD; RIGHT_FORWARD; } else if (left_speed < IR_THRESHOLD && right_speed > IR_THRESHOLD) { turn_left(); } else if (left_speed > IR_THRESHOLD && right_speed < IR_THRESHOLD) { turn_right(); } else { LEFT_STOP; RIGHT_STOP; } } } } ``` 这个代码实现了循迹小车的基本功能,包括前进、左转、右转和停止。在代码中,使用了两个定时器(TIMER_A0和TIMER_A1)来计算左右轮子的速度,然后根据红外传感器的数据来控制小车的行动。同时,代码还支持手动控制小车的转向,只需要按下P1.1的按钮即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值