时钟(分针和时针的重合问题)

简介: 时钟(分针和时针的重合问题)

问题描述

从a点b分到s点t分时针和分针重合多少次?

输入

有多组数据,每组1行4个数 a,b,s,t. 1<=a,s <=12, 0<=b,t<60. 0 0 0 0结束.

输出

参看以下样例

 

输入样例 1

12 50 1 2

3 8 3 20

2 45 11 0

11 0 3 20

1 2 12 50

3 20 3 8

0 0 0 0

输出样例 1

0

1

8

4

11

10

题目并不难理解,就是要我们计算两个时间点内时针和分针的重合次数。

对此我们先对分针和时针的重合规律做一下分析:

不难发现从1~12h,每一小时分针和时针都会重合一遍,而0~1h内,时针和分针不会重合,也就是说,在完整的12小时内,分针和时针只会重合11次。

另外我们还需要知道的是分针和时针每分钟移动的角度:

1、分针:分针每分钟走整个钟面的1/60,所以时针每分钟走的度数为6°。

2、时针:时针每分钟走整个钟面的1/720,所以时针每分钟走的度数为0.5°。

程序设计:

一、大致可以分为三种情况:

1、两个时间点在同一个小时内,且后一个时间点大于前一个时间点。即:a==s&&b<t

对此我们只需分别判断两个时间点的时针和分针的角度大小关系即可。

若时间点一的分针角度小于时针角度,同时时间点二的分针角度大于时针角度,重合次数加一,其他情况重合次数不变。

2、两个时间点在同一个周期(12h)内。即:a<s

对此我们主要分三步计算:

(1)判断a:b~a+1:00是否有重合;

(2)判断a+1~s:00的重合次数(s-a-1);

(3)判断s:00~s:t是否有重合。

3、两个时间点不在同一个周期(12h)内。即:(a==s&&b>t)||(a>s)

对此我们也分三步来计算:

(1)判断a:b~a+1:00是否有重合;

(2)判断a+1~12:00的重合次数+1:00~s:00的重合次数(12-a-1+s-1);

(3)判断s:00~s:t是否有重合。

代码如下:

#include<stdio.h>
int main()
{
  int a,b,s,t;
  while(scanf("%d %d %d %d",&a,&b,&s,&t))
  {
    int sum=0;
    if(a==0&&b==0&&s==0&&t==0) break;
    float h1=a*30+0.5*b,m1=b*6,h2=s*30+0.5*t,m2=t*6;
    //printf("h1=%.2f m1=%.2f h2=%.2f m2==%.2f\n",h1,m1,h2,m2);
    if(a==s&&b<t)
    {
      if(h1>m1&&h2<m2) sum++;
    }
    else if(a<s)
    {
      if(h1>m1) sum++;
      if(h2<m2) sum++;
      sum+=s-a-1;
    }
    else
    {
      if(h1>m1) sum++;
      if(h2<m2) sum++;
      sum+=12-a-1;
      sum+=s-1;
    }
    printf("%d\n",sum);
  }
  return 0;
 } 
目录
相关文章
|
安全 数据安全/隐私保护
【接口加密】理解接口加密的基础概念
【接口加密】理解接口加密的基础概念
|
IDE 开发工具 C++
VS2015+Qt5.9.8编译报错:error MSB6006: “cmd.exe”已退出,代码为 2
VS2015+Qt5.9.8编译报错:error MSB6006: “cmd.exe”已退出,代码为 2
3153 0
CH340外围电路
CH340外围电路介绍
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
NotebookLM与NotebookLlama 了解下 | AI工具
在AI技术飞速发展的今天,Google和Meta分别推出了基于大型语言模型的笔记本应用——NotebookLM和NotebookLlama。这两款产品不仅提供了强大的文档处理和编码支持,还在文档和编码领域引领了创新。NotebookLM强调个性化和隐私保护,而NotebookLlama则以开源和高度定制性著称。本文将深入解析这两款产品并进行对比分析。【10月更文挑战第16天】
764 2
|
11月前
|
存储 NoSQL MongoDB
MongoDB 概念解析
10月更文挑战第12天
230 0
MongoDB 概念解析
|
前端开发
前端代码书写规范
【8月更文挑战第15天】前端代码书写规范
468 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的医院在线挂号预约系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的医院在线挂号预约系统的详细设计和实现(源码+lw+部署文档+讲解等)
211 0
|
SQL 人工智能 自然语言处理
利用LangChain构建的智能数据库操作系统
LangChain库简化了数据库与AI结合,通过LLM将自然语言转为SQL语句进行查询和数据分析。它降低了数据查询的门槛,支持创建基于数据库的问答机器人和数据分析面板。实战案例展示了如何使用LangChain进行查询并以自然语言形式返回结果。通过限制表名,可处理大量数据。总结:掌握LangChain在数据库操作、查询及结果自然语言转换的应用。
|
存储 SQL 关系型数据库
Pandas与数据库交互:实现高效数据交换与存储
【4月更文挑战第16天】本文介绍了Pandas与数据库交互的方法,包括使用`read_sql`和`to_sql`函数连接SQLite、MySQL等数据库。为了提升数据交换效率,建议采用批量操作、优化SQL查询和使用事务。在数据存储优化方面,选择合适的数据类型、压缩数据以及使用分区或分片都是有效策略。通过这些方法,可实现Pandas与数据库间高效、可靠的数据处理和分析。
|
存储 Dragonfly 弹性计算
蚂蚁安全科技 Nydus 与 Dragonfly 镜像加速实践 | 龙蜥技术
如何基于Nydus 与 Dragonfly 镜像加速技术和 LifseaOS 等为容器的启动加速?