zoukankan      html  css  js  c++  java
  • BestCoder Round #46

    1001 YJC tricks time

    题目链接:1001

    题意:给你时针和分针所成的角度,输出现在的时间,以10秒为单位

    思路:每10秒,分针走1度,时针走分针的1/12,我们可以根据时间来分别计算出分针和时针走的度数(分针可能走多圈),然后计算出二者的夹角(按题目的格式*12000)

    我们可以得到一张时间对夹角的map表,对于输入的夹角,去map中查找是否存在对应的时间即可,除了0和06:00:00以外其他的夹角都对应两个时间,这两个时间互补。

    code:

     1 #include <cstdio>
     2 #include <map>
     3 using namespace std;
     4 const int MAXN = 43200;
     5 const int MOD = 4320000;
     6 map<int, int> mp;
     7 
     8 void init()
     9 {
    10     for (int i = 0; i < MAXN; i += 10)
    11     {
    12         int t1 = i * 1200 % MOD;
    13         int t2 = i * 100;
    14         int t = t1 - t2;
    15         if (t2 > t1) t = t2 - t1;
    16         if (t > 2160000) t = MOD - t;
    17         mp[t] = i;
    18     }
    19 }
    20 
    21 void solve(int n)
    22 {
    23     int hh = n / 3600;
    24     int mm = (n - hh * 3600) / 60;
    25     int ss = n - hh * 3600 - mm * 60;
    26     printf("%02d:%02d:%02d
    ", hh, mm, ss);
    27 }
    28 
    29 int main()
    30 {
    31     init();
    32     int n;
    33     while (scanf("%d", &n) != EOF)
    34     {
    35         if (mp.count(n))
    36         {
    37             int t = mp[n];
    38             if (t != MAXN - t && t != 0) solve(MAXN - t);
    39             solve(t);
    40         }
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    Freemarker-2.3.22 Demo
    Freemarker-2.3.22 Demo
    Freemarker-2.3.22 Demo
    Freemarker-2.3.22 Demo
    Oracle PLSQL Demo
    Oracle PLSQL Demo
    Oracle PLSQL Demo
    Oracle PLSQL Demo
    Oracle PLSQL Demo
    Oracle PLSQL Demo
  • 原文地址:https://www.cnblogs.com/ykzou/p/4621746.html
Copyright © 2011-2022 走看看