钟表——蓝桥杯十三届2022国赛大学B组真题

问题分析

这个问题的关键有两点:1.怎么计算时针,分针,秒针之间的夹角,2.时针,分针,秒针都是匀速运动的,并非跳跃性的。问题1很好解决看下面的代码就能明白,我们先考虑问题2,有的同学可能会想这个答案存在很多,比如6:15,此时时针指向6,分针指向3,秒针指向0,满足A=2B,但其实是不存在这种情况的,因为此时分针指向3,时针必定不可能指向6,而是在6的左边,要记住时钟是渐变的而非跃变的。明白这个就好写了。

写法一

题目告诉我们时针最大值为6,分针最大值60,秒针最大值60,因此可能存在答案的时间范围为1~25199秒(0:0:0这个答案被剔除了),我们以秒为单位来开始遍历。秒针每秒走6度,分钟每10秒走1度,时针每120秒走1度。

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main() {
	int s,f,m;
	double ds,df,dm,A,B;
	for(int i=1;i<=25199;i++){
		dm=i*6.0;//秒钟转过的角度
		df=i*0.1;//分钟转过的角度
		ds=i*1.0/120;//时钟转过的角度
		while(dm>=360)dm-=360;//求余
		while(df>=360)df-=360;//求余
		A=min(fabs(ds-df),360-fabs(ds-df));//夹角必为正值所以取绝对值,但是要在0~180之间,因此要取它与它的补角中较小的。
		B=min(fabs(dm-df),360-fabs(dm-df));
		if(fabs(A-2*B)<1e-3){//因为是浮点运算要考虑精度损失
			cout<<i/60/60<<" "<<i/60%60<<" "<<i%60<<endl;
		}
	}
	return 0;
}

方法二

三层循环遍历时钟,分钟,秒钟的每种情况。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;

int main() 
{
    for(int s=0;s<=6;++s){//遍历时钟
        for(int f=0;f<60;++f){//遍历分钟
            for(int m=0;m<60;++m){//遍历秒钟
                if(s==0&&f==0&&m==0) continue;
                double dm=360*m/60;//秒针走过的角度
                double df=360*f/60+dm/60;//分针走过的角度,dm/60:加上秒钟引起的分钟变化
                double ds=360*s/12+df/12;//时针走过的角度//df/12:加上分钟引起的时钟变化
                double A=abs(df-ds),B=abs(df-dm);
                //取小的角度
                A=min(A,360-A);
                B=min(B,360-B);
                if(fabs(A-2*B)<=1e-10){
                    printf("%d %d %d\n",s,f,m);
                }
            }
        }
    }
    return 0;
}
相关推荐
CoovallyAIHub13 小时前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub14 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub15 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞15 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
徐小夕16 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github
CoovallyAIHub17 小时前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉
CoovallyAIHub17 小时前
仅凭单目相机实现3D锥桶定位?UNet-RKNet破解自动驾驶锥桶检测难题
深度学习·算法·计算机视觉