首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 程序驗證:一天中時針、分針、秒針三者重合謎題

     編輯:關於C++

問題分析

直接計算三針重合時間數學推導複雜。轉換思路:

  1. 先求時針與分針重合時間(12小時內重合11次,含首尾共12次)。
  2. 檢查這些時刻是否同時滿足分針與秒針(或時針與秒針)重合。

核心代碼

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

struct HMS { int hour, minute, second; };

HMS secToHour(int s) {
    int h = s / 3600; s %= 3600;
    int m = s / 60; s %= 60;
    return HMS{h, m, s};
}

void meetTime(vector<int> &mt) {
    double vs = 1.0;          // 秒針速度:1 圈/分鐘
    double vm = 1.0 / 60.0;   // 分針速度
    double vh = 1.0 / 720.0;  // 時針速度
    for (int i = 1; i < 24; i++) {
        int a = i * 60.0 / (vm - vh); // 時分針重合時間(秒)
        if (fmod((vs - vh) * a, 60.0) <= 1) // 判斷秒針是否同位
            mt.push_back(a);
    }
}

程序將問題轉化為簡單的相對速度計算,避免複雜數學推導,輕松驗證三針重合謎題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved