【2022十三届蓝桥杯真题 B组C/C++】 钟表

试题 B: 钟表
【问题描述】
          在 12 小时制的钟表中,有分针、时针、秒针来表示时间。记分针和时针之间的夹角度数为 A(0 ≤ A ≤ 180)、分针和秒针之间的夹角度数为 B (0 ≤ B ≤ 180)。而恰好在 s 时 f 分 m 秒时,满足条件 A = 2B 且 0 ≤ s ≤ 6; 0 ≤ f < 60;0 ≤ m < 60,请问 s, f, m 分别是多少。
注意时针、分针、秒针都围绕中心匀速转动。
提交格式为三个由一个空格隔开的整数,分别表示 s, f, m。如 3 11 58表示3 点 11 分 58 秒。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为三个由一个空格隔开的整数,在提交答案时只填写为三个由一个空格隔开的整数,填写多余的内容将无法得分。
 

#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/60*m;
				double  df=360/60*f+dm/60;
				double  ds=360/12*s+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)<=0){
					printf("%d %d %d",s,f,m);
				}
			}
		}
	}
} 

时针夹角度数:分钟每走一圈,时钟走一格,即为1/12圈。那么我们可以得知,一格为30度。时钟并非直接跳到下一格,而是随着分针的转动带动到下一格,比如分钟从12指向6,走了半圈,届时时钟将会朝向下一时间点旋转半格。我们就得出来了,分钟转动的角度与一圈的比值和时钟从一格内转动的角度与一格的度数成正比。
就可以得出公式:分针转角/一圈=ds=df/12时针转角/一格  (df/360=ds/30) 

即 ds=df/12 (注:这部分是分针转动带动时针转动的度数)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值