UVA11646 Athletics Track(计算几何、弧长公式)

整理的算法模板合集: ACM模板


在这里插入图片描述

题目大意:一个体育场一圈是400米,其中弯道时两端半径相同的圆弧,已知矩形的长和宽的比例,求长和宽的具体长度。

在这里插入图片描述
atan就是arctan,反三角函数求弧度

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>

using namespace std;

const int N = 1000007;
typedef long long ll;
ll mod = 1e9 + 7;

const double eps = 1e-8;

double a, b;
int kcase;
int main()
{
    while(scanf("%lf : %lf", &a, &b) != EOF){
        double r = sqrt(a * a + b * b) / 2;
        double jiajiao = atan(b / a) * 2;
        double hu = jiajiao * r;
        double rate = 200.0 / (hu + a);
        printf("Case %d: %.10f %.10f\n",  ++ kcase, rate * a, rate * b);
    }
    return 0;
}

好的,我可以根据你的要求,为你提供一个关于抽象类和接口在某运动会管理系统中的应用的案例。 假设我们要开发一个运动会管理系统,系统中有多种不同的运动项目,例如田径、游泳、篮球等。为了方便管理,我们可以定义一个抽象类 Sports,用于描述运动项目的共同特征,例如名称、规则、比赛场地等。代码如下: ``` public abstract class Sports { private String name; // 运动项目名称 private String rule; // 比赛规则 private String field; // 比赛场地 public Sports(String name, String rule, String field) { this.name = name; this.rule = rule; this.field = field; } public String getName() { return name; } public String getRule() { return rule; } public String getField() { return field; } public abstract void start(); // 抽象方法,用于开始比赛 public abstract void end(); // 抽象方法,用于结束比赛 } ``` 在 Sports 类中,我们定义了运动项目的共同特征,并且定义了两个抽象方法 start 和 end,用于开始比赛和结束比赛。由于每种运动项目的具体实现方式不同,所以我们无法在 Sports 类中实现这两个方法,因此必须将它们声明为抽象方法。 接下来,我们可以针对不同的运动项目,分别定义具体的子类,例如: ``` public class Athletics extends Sports { public Athletics() { super("田径", "在田野或者运动场上进行的运动", "田径场"); } @Override public void start() { System.out.println("田径比赛开始了!"); } @Override public void end() { System.out.println("田径比赛结束了!"); } } public class Swimming extends Sports { public Swimming() { super("游泳", "在水中进行的运动", "游泳馆"); } @Override public void start() { System.out.println("游泳比赛开始了!"); } @Override public void end() { System.out.println("游泳比赛结束了!"); } } public class Basketball extends Sports { public Basketball() { super("篮球", "两队各五人,用手将球投入对方的篮筐得分", "篮球场"); } @Override public void start() { System.out.println("篮球比赛开始了!"); } @Override public void end() { System.out.println("篮球比赛结束了!"); } } ``` 在这些子类中,我们实现了 start 和 end 方法,用于具体描述每种运动项目的比赛过程。 最后,我们可以通过一个运动会管理类来管理所有的运动项目,例如: ``` public class SportsManager { public static void main(String[] args) { Sports[] sports = {new Athletics(), new Swimming(), new Basketball()}; for (Sports sport : sports) { System.out.println("运动项目:" + sport.getName()); System.out.println("比赛规则:" + sport.getRule()); System.out.println("比赛场地:" + sport.getField()); sport.start(); sport.end(); System.out.println(); } } } ``` 在 SportsManager 类中,我们定义了一个 Sports 类型的数组,用于存储所有的运动项目。然后,我们遍历这个数组,对每个运动项目进行管理,包括输出运动项目的基本信息、开始比赛、结束比赛等操作。 通过这个案例,我们可以看到,抽象类和接口在运动会管理系统中的应用非常自然和合理,通过抽象类 Sports,我们定义了运动项目的共同特征,并且声明了抽象方法 start 和 end,用于描述每个运动项目的比赛过程。通过具体的子类,我们实现了这些抽象方法,用于具体描述每种运动项目的比赛过程。在 SportsManager 类中,我们通过遍历 Sports 类型的数组,实现了对多种运动项目的管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁凡さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值