百度嵌入式软件笔试编程题

《嵌入式软件开发笔试与面试手册》https://blog.nowcoder.net/zhuanlan/jvN8gj

《嵌入式软件笔试-2023年真题汇总》https://blog.nowcoder.net/zhuanlan/0oDWVm

《嵌入式软件笔试-2024年真题汇总》https://blog.nowcoder.net/zhuanlan/04yYym

时钟指针

A的寝室里放着一个时钟。时钟有时针,分针,秒针三种指针。在某些时刻,时钟会记录下当前时间,格式为 hh:mm:ss 。时钟上看不出日期,每天零点,三根指针都会归零。现在小A得到了一系列被记录的时间,且这些时间是按照先后顺序被记录的。小A想让你算算,每两个时间点之间,秒针至少转了多少圈。

注:一天有 24 个小时,1 小时有 60 分钟,1 分钟有 60 秒,秒针一分钟转一圈。

输入描述

第一行一个整数  n(2<=n<=10^5) ,代表时间序列中时间点的个数。

第二行 n 个字符串,每个字符串代表一个时间点,格式为 hh:mm:ss

(0<=hh<=24, 0<=mm<60, 0<=s<60)

输出描述

n-1 个数,第 i 个数表示第 i~i+1 时间点秒针转过的圈数。输出结果和答案的绝对误差或相对误差不超过 10^-5  即被认为正确。

示例 1

输入

2 10:00:00 10:00:30

输出

0.5000000000

说明

10:00:00 10:00:30 至少过了半分钟,秒针在时钟上走了半圈

示例 2

输入

3 10:00:00 09:00:00 08:00:00

输出

1380.0000000000 1380.0000000000

说明

10:00:00 09:00:00 至少过了 23 小时,秒针在时钟上走了 1380 圈从 09:00:00 08:00:00 至少过了 23 小时,秒针在时钟上走了 1380

示例 3

输入

2 00:00:00 00:00:00

输出

0.0000000000

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
vector<string> solve(int n, const vector<string>& times) {
    vector<string> ans;
    for (int i = 1; i < n; ++i) {
        int h1, m1, s1, h2, m2, s2;
        char colon;
        istringstream iss1(times[i-1]);
        istringstream iss2(times[i]);
        
        iss1 >> h1 >> colon >> m1 >> colon >> s1;
        iss2 >> h2 >> colon >> m2 >> colon >> s2;

        int seconds1 = h1 * 3600 + m1 * 60 + s1;
        int seconds = h2 * 3600 + m2 * 60 + s2;

        if (seconds < seconds1) {
            seconds += 86400;  // 加上一天的秒数
        }

        int diff = seconds - seconds1;
        double rs = diff / 60.0;

        ostringstream oss;
        oss << fixed << setprecision(10) << rs;
        ans.push_back(oss.str());
    }
    return ans;
}

int main() {
    int n;
    cin >> n;
    vector<string> times(n);
    for (int i = 0; i < n; ++i) {
        cin >> times[i];
    }
    vector<string> res = solve(n, times);
    for (int i = 0; i < res.size(); ++i) {
        cout << res[i];
        if (i < res.size() - 1) cout << " ";
    }
    cout << endl;
    return 0;
}

 

 

数学题

牛牛最近在做比大小的小学数学题目,每个题目可以表示为:a op b ( ) b op a

a,b 分别表示两个正整数。op 表示一个数学意义上的运算符(包括加 + - * / 和乘方 ^ 运算)。

( ) 表示你需要填写的答案,是符号 =, < , >  其中的一个。

本题共有 t 组数据。

输入描述

1 行,一个正整数 t(1<=t <= 5*10^4) 表示数据的组数。

2 行到第 t+1 行,每行先给出 2 个正整数a,b (1<=a,b<=10^9),再给出一个符号 op 表示一组询问,其中 op +-*/^ 中的一个。

输出描述

输出 t 行,每行一个符号 ans 表示答案。

示例 1

输入

2 1 1

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要发布2024年(2025届)嵌入式软件开发相关岗位笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务