亲和数+龟兔赛跑杭电

这篇博客包含两道算法题的解决方案。第一题涉及寻找两个数的真约数和是否相等;第二题是电动车续航路径规划问题,通过计算每个站点最短时间,判断最终是否能完成全程。博主使用了C语言实现,涉及到循环、条件判断及数组操作。

第三次算法练习:

两道算法题在这里插入图片描述

在这里插入图片描述

第一题:

在这里插入图片描述

解决方案:

下面是我的代码

#include<stdio.h>
int main()
{
	int m,i,j,x,y;
	scanf("%d",&m);//输入需要进行运算的组数
	for(i=0;i<m;i++)//进行m次循环进行输入
	{
		scanf("%d %d",&x,&y);
		int h=1,f=1;//其约数中必有1
		for(j=2;j<x;j++)
		{
			if(x%j==0)
			{
				h+=j;
			}
		}//求出x的所有真约数之和
		for(j=2;j<y;j++)
		{
			if(y%j==0)
			{
				f+=j;
			}
		}//同上,求出y的所有真约数之和
		if(h==y&&f==x)//判断是否x的真约数之和等于y且y的真约数之和等于x
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		 } 
	}
	return 0;
}

可分别求该组数中两个数的真约数和,我使用了两个循环,分别来求x和y的真约数和,最后用了一个if语句进行判断是否满足条件,然后输出相应的值。

第二题:

在这里插入图片描述

解决方案:

#include<stdio.h>
#include<string.h> 
float t[105];                   //储存最短时间 
int N,C,T,VR,VT1,VT2;
int a[105];                     //储存每个站点的距离 
void TIME()
{
	double time,min;            //time储存每次的时间,min储存最小时间 
	memset(t,-1,sizeof(t));   //数组清空 
	int len,i,j; 
	t[0]=0;                    //起点用时为0 
	for(i=1;i<N+2;i++)          //站点循环 
	{
		min=100000000000;       //将min设为尽量大的数 
		for(j=0;j<i;j++)        //每次都从第一个站点算起 
		{
			len=a[i]-a[j];      //第i和第j个站点的距离 
			
			if(len>C)           //距离大于电量 ,脚蹬 
			{
			    time=1.0*C/VT1+(len-C+0.0)/VT2;
			}
			else                //完全用电 
			{
			    time=1.0*len/VT1;  
		    }
			time+=t[j];         //time储存行驶到第j个站点的最短时间 
			if(j)               //如果加电 
			{
			    time+=T;             //时间++ 
		    }
			if(min>time)         //min储存当前最小时间 
			{
			    min=time;
			} 
		}
		t[i]=min;              //t储存到每个站点的最小时间 
	}
}
int main()
{
	int L,i,j;
	while(scanf("%d",&L)!=EOF)
	{
		scanf("%d%d%d%d%d%d",&N,&C,&T,&VR,&VT1,&VT2);
		for(i=1;i<=N;i++)
		{
		    scanf("%d",&a[i]);
		}        //花样输入 
		a[0]=0;a[N+1]=L;          //第一个站点为0,最后一个距离L 
		TIME();                     //调用 
		if(1.0*L/VR<t[N+1]) 
		{ 
            printf("Good job,rabbit!\n"); 
		} 
        else 
		{ 
    	    printf("What a pity rabbit!\n");
		}  
	} 
	return 0;
}

void *memset(void *s, int c, unsigned long n):

函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值