热门标签 | 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;
}

推荐阅读
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
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社区 版权所有