热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2010年编程挑战赛:特殊数与时间转换问题

本次竞赛包含三个编程题目,旨在考察参赛者对数学逻辑及时间处理的能力。题目涉及筛选特定条件下的数字、Unix时间戳转换以及数列中元素关系的分析。

1. 与7无关的数字

  • 查看
  • 提交
  • 统计
  • 讨论

时间限制: 1000毫秒

内存限制: 65536千字节

题目描述: 定义一个正整数,如果它可以被7整除,或者其十进制表示中含有数字7,则认为该数与7相关。本题要求计算并返回所有不大于给定值n(n<100)且与7无关的正整数的平方和。

输入说明: 输入包括一个正整数n,范围在1到99之间。

输出说明: 输出所有不大于n且与7无关的正整数的平方和。

示例输入: 21

示例输出: 2336

#include 

bool isRelatedToSeven(int number) {
if (number % 7 == 0) return true;
while (number != 0) {
if (number % 10 == 7) return true;
number /= 10;
}
return false;
}

int main() {
int n;
long long sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
if (!isRelatedToSeven(i)) {
sum += i * i;
}
}
printf("%lld", sum);
return 0;
}

2. Unix时间转换

  • 查看
  • 提交
  • 统计
  • 讨论

时间限制: 1000毫秒

内存限制: 65536千字节

题目描述: 在Unix系统中,时间通常以自1970年1月1日0时起经过的秒数来表示,此数值存为32位整数。编写程序将给定的Unix时间戳转换为“YYYY-MM-DD HH:MM:SS”格式。

输入说明: 输入包含多行,每行一个整数t(0≤t<2^31),代表一个Unix时间戳。

输出说明: 对每个输入的时间戳,输出一行,格式为“YYYY-MM-DD HH:MM:SS”。

示例输入: 10 1234567890

示例输出: 1970-01-01 00:00:10 2009-02-13 23:31:30

#include 

#define SECONDS_IN_A_DAY 86400
#define EPOCH_YEAR 1970

struct DateTime {
int year, month, day;
int hour, minute, second;
};

bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

int daysInMonth(int year, int month) {
static int daysPerMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (mOnth== 2 && isLeapYear(year)) return 29;
return daysPerMonth[month - 1];
}

struct DateTime convertUnixTime(long timestamp) {
struct DateTime dt = {EPOCH_YEAR, 1, 1, 0, 0, 0};
int totalDays = timestamp / SECONDS_IN_A_DAY;
int remainingSecOnds= timestamp % SECONDS_IN_A_DAY;
dt.hour = remainingSeconds / 3600;
remainingSeconds %= 3600;
dt.minute = remainingSeconds / 60;
dt.secOnd= remainingSeconds % 60;

while (totalDays > 0) {
int daysInCurrentYear = isLeapYear(dt.year) ? 366 : 365;
if (totalDays >= daysInCurrentYear) {
totalDays -= daysInCurrentYear;
dt.year++;
} else {
int daysInCurrentMOnth= daysInMonth(dt.year, dt.month);
if (totalDays >= daysInCurrentMonth) {
totalDays -= daysInCurrentMonth;
dt.month++;
} else {
dt.day += totalDays;
totalDays = 0;
}
}
}
return dt;
}

int main() {
long timestamp;
while (scanf("%ld", ×tamp) != EOF) {
struct DateTime dt = convertUnixTime(timestamp);
printf("%04d-%02d-%02d %02d:%02d:%02d\n", dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second);
}
return 0;
}

3. 数列中的和数

  • 查看
  • 提交
  • 统计
  • 讨论

时间限制: 1000毫秒

内存限制: 65536千字节

题目描述: 给定一个整数序列,找出其中有多少个数可以表示为该序列中另外两个不同数的和。例如,在数列1 2 3 4中,有2个这样的数(3=2+1,4=1+3)。

输入说明: 第一行包含一个整数T,表示数据组数(1≤T≤100)。每组数据的第一行是一个整数n(1≤n≤100),表示数列长度;第二行是n个整数,构成数列。

输出说明: 对于每组数据,输出一行,包含一个整数,表示数列中满足条件的数的数量。

示例输入: 2
4
1 2 3 4
5
3 5 7 9 10

示例输出: 2
1

#include 

int findSumNumbers(int n, int numbers[]) {
int count = 0;
for (int i = 0; i bool found = false;
for (int j = 0; j for (int k = j + 1; k if (i != j && i != k && numbers[i] == numbers[j] + numbers[k]) {
found = true;
}
}
}
if (found) count++;
}
return count;
}

int main() {
int T;
scanf("%d", &T);
while (T--) {
int n;
scanf("%d", &n);
int numbers[n];
for (int i = 0; i scanf("%d", &numbers[i]);
}
printf("%d\n", findSumNumbers(n, numbers));
}
return 0;
}

推荐阅读
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
author-avatar
hedongsheng
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有