交大oj-1008-二哥买期货 C++ 总结

USACO介绍 报名流程 成绩查询方式详解(文末有备赛资料) 四个级别,一进入USACO注册账号即为铜级,一级一级的比赛刷高自己的等级,如果你最终能够获得黄金或者白金级别的奖项,绝对是提高竞争力的大杀器。同时进入官网,点击Contests,在相应的页面上可以找到比赛的最终结果总结、测试数据、题目解析、比赛的简要分析及参赛选手的成绩统计。需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且对数据结构有比较深的了解。选择使用的编程语言,在本地完成代码,以文件形式进行提交。,对于文件名的大小写是敏感的,同时规定文件内容的每一行均需以换行符’\n’结尾。 阅读详情

交大oj-1008-二哥买期货 C++ 总结


1,基姆拉尔森计算公式

这个公式可以根据日期计算这一天是星期几,具体公式如下:
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7

  • y:Year 年
  • m:Month 月
  • d:Day 天
  • W:Week 转换后的星期

    需要注意的是,要把一月与二月看成是上一年的十三月与十四月。C++代码如下:

//这个函数返回的结果是0-6的整数,表示星期一到星期天
int getWeekNumber(int year, int month, int day)
{
    if (month == 1 || month == 2) {
        year--;
        month += 12;
    }
    return ((day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7);
}

2,这道题的总体的思路?

现在这道题还没有AC,总体思路待写完后再补充。

3,已经AC的代码 C++

#include <iostream>
#include <stdio.h>
using namespace std;
int dayOfMonth[2][13] = { { 0,31,28,31,30,31,30,31,31,30,31,30,31 },{ 0,31,29,31,30,31,30,31,31,30,31,30,31 } };

//定义日期的结构体,用来判断平年闰年,判断某个日期是这周的第几天
//这个方法要将每年的1,2月作为上一年的13,14月份
struct Date
{
    int y, m, d;
    int leap()
    {
        return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0 ? 1 : 0);
    }
    int week()
    {
        int Y = y, M = m;
        if (m == 1 || m == 2)
        {
            Y--;
            M += 12;
        }
        int W = (d + M * 2 + 3 * (M + 1) / 5 + Y + Y / 4 - Y / 100 + Y / 400) % 7;
        return W + 1;
    }
    Date() {}
    //定义输出构造函数
    Date(int yy, int mm, int dd) { y = yy; m = mm; d = dd; }

    //定义结构体函数getNext(),获得后一天的日期

    Date getNext()
    {
        //如果这个天数小于该月的最大天数,则将该天数加1
        Date t(y, m, d);
        if (d<dayOfMonth[leap()][m])
            t.d += 1;
        //如果day为某月最后一天,则比较日期,如果month小于12月,则月份加1
        //并且将日设为1
        else if (m<12)
        {
            t.m += 1;
            t.d = 1;
        }
        //月和日为12.31则年往上加,月和日均设为1月1日
        else
        {
            t.y += 1;
            t.m = 1;
            t.d = 1;
        }
        return t;
    }
    //判断是否为证券处理的日期
    //如果这天是周六周日则不为处理日期,如果这天是元旦、五一、十一也不为处理日期
    bool dealDay()
    {
        if (week() == 6 || week() == 7)
            return false;
        if (m == 1 && d == 1 || m == 5 && d >= 1 && d <= 3 || m == 10 && d >= 1 && d <= 7)
            return false;
        return true;
    }
    //判断是否为周末
    bool isWeekend()
    {
        return week() == 6 || week() == 7;
    }
};

//判断这两天是否为相等的日期,如果年月日均相等,则是相同的日期

bool equals(Date d1, Date d2)
{
    return d1.y == d2.y&&d1.m == d2.m&&d1.d == d2.d;
}

//判断一年中有多少天交易日

int ansOfYear(int year)
{
    bool isleap = (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
    int res = (isleap ? 366 : 365), t1, t2, t3 = 0, i;
    //一年有52周,这样有104天的周末
    t1 = 104;
    //如果是闰年,一年就有52周余两天,即余12.30与12.31
    if (isleap)
    {
        //如果12.30为周末,则非交易日多一天,同理12.31
        if (Date(year, 12, 30).isWeekend())
            t1 += 1;
        if (Date(year, 12, 31).isWeekend())
            t1 += 1;
    }
    //如果是平年的话,52周多1天,即12.31如果是周末则非交易日多一天
    else
    {
        if (Date(year, 12, 31).isWeekend())
            t1 += 1;
    }

    //元旦+五一+国庆==11天的假期不交易
    t2 = 11;
    //判断这三个假期是否和周末冲突,冲突的有几天
    if (Date(year, 1, 1).isWeekend())
        t3 += 1;
    for (i = 1; i<4; i++)
        if (Date(year, 5, i).isWeekend())
            t3 += 1;
    for (i = 1; i<8; i++)
        if (Date(year, 10, i).isWeekend())
            t3 += 1;
    //计算一年中多少个交易日
    res = res - t1 - t2 + t3;
    return res;
}

int main()
{
    int n, res = 0, i;
    Date d1, d2, t;
    scanf("%d", &n);
    while (n--)
    {
        res = 0;
        //输入两个日期
        scanf("%d-%d-%d %d-%d-%d", &d1.y, &d1.m, &d1.d, &d2.y, &d2.m, &d2.d);
        //如果两个日期之间相差小于等于一年,则直接计算日期差
        //起始日期为第一个日期,终止日期为第二个日期,用getNext()来计算后一天的//日期,并且如果是交易日的话,res++
        if (d2.y - d1.y <= 1)
        {
            for (t = d1; !equals(t, d2.getNext()); t = t.getNext())
                if (t.dealDay())
                    res += 1;
        }
        //如果两个日期相差一年以上,则先计算第一个日期到下一年1.1之前的交易日
        //再计算第二个日期的从1.1到该日期的交易日数
        //最后再计算二者之间相差的年数之间的交易日
        else
        {
            for (t = d1; !equals(t, Date(d1.y + 1, 1, 1)); t = t.getNext())
                if (t.dealDay())
                    res += 1;
            for (t = Date(d2.y, 1, 1); !equals(t, d2.getNext()); t = t.getNext())
                if (t.dealDay())
                    res += 1;
            for (i = d1.y + 1; i<d2.y; i++)
                res += ansOfYear(i);
        }
        printf("%d\n", res);
    }
    return 0;
}
//代码来源于网络,注意消化理解

后续待补充….

题解:洛谷 P5731 【深基5.习6】蛇形方阵 等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用。个字符,前面使用空格补齐。输出符合题目要求的蛇形矩阵。本文分享的必刷题目是从。 阅读详情

相关推荐

usaco 合集usaco 合集usaco 合集

usaco 合集,包括英文原题和中文译题,测试数据以及答案,很全啊!usaco 合集usaco 合集usaco 合集usaco 合集

杭电OJ 1008(C++)

本题比较简单,注意每次输入新的一组数据时将变量清零。 #include <iostream> using namespace std; int main() { int n, now; while (cin >> n) { if (n == 0) break; int pre = 0, total = 0; for (int i = 0; i...

Intelligence1028的博客 269

USACO答案及详解

某些USACO题目的答案,很详细,代码清晰结构良好,算法高效易于调试

USACO简介

USACO简介

善良的小乔的博客 1429

北京交通大学大一C语言上机作业答案

我是2014级计算机与信息技术学院的学生,一年下来我也想为自己留下些东西,同时希望下年学习的同学能有所借鉴。其中包括我的C语言上机题目、上机代码、上机总结,希望以后的学弟学妹能有所借鉴,能更快的完成作业,不要认为C语言难学,努力!

北京大学OJ题目详细分类

对于ACMer特别有用的东西,初学者特别适合,有需要其他知名大学OJ题目分类的,可以直接联系我。邮箱:514103008@qq.com

浅谈USACO(美国中学生计算机奥赛)

浅谈USACO(美国中学生计算机奥赛)

沾花把玖的博客 4676

一文详解本地知识库RAG(检索增强):LangChain + Hugging Face 三件套 + 本地大模型 + MCP 协议 + Chroma + Agent 全流程实战

模型上下文协议(MCP)是 Anthropic 推出的开放标准,基于 JSON-RPC 2.0,为 AI 应用与外部工具/数据源之间提供统一的双向通信协议,被称为“AI 应用的 USB-C”。LangChain 是一个围绕 LLM、提示模板(Prompts)、记忆(Memory)、链(Chains)、工具(Tools)和代理(Agents)等组件打造的开源框架,旨在简化复杂自然语言应用的开发。:任意可调用的功能或服务(API、数据库查询、本地函数等),由 Agent 或 Chain 在推理过程中调用。

weixin_41645791的博客 1425

上海交大OJ 1008. 二哥买期货

emmm....我的代码过不了OJ时间超时 只能得80分 ----------------------------------------------------------------------- Description 二哥想知道在一段时期内,一共有多少个交易日。期货交易日的限定如下: 周六、周日不能交易 元旦期间(1月1日)不能交易 五一劳动节期间(5月1日至3日)不能交易 ...

eacape 375

从零构建AI Agent集群:Docker Compose与Nginx部署实战

在AI应用开发领域,微服务架构和容器化部署已成为提升开发效率和系统可维护性的关键技术。Docker Compose作为容器编排工具,能够将多个独立服务(如Node.js、Python应用)及其依赖(数据库、缓存)封装在隔离环境中,并通过统一配置文件定义服务间的网络与依赖关系,实现一键启停。Nginx作为反向代理,则提供了统一的网络入口、请求路由和负载均衡能力,是构建高可用Web应用的基石。这种组合技术方案的价值在于,它能将复杂的AI系统(如工作流引擎、对话Agent、技能库)的部署运维复杂度大幅降低,使得开

weixin_27028523的博客 639

RK3568部署YOLOv8的7种方法对比:量化vs非量化的性能实测与优化建议

本文针对RK3568平台,深度对比了YOLOv8模型的七种部署方法,重点分析了量化与非量化策略的性能差异。通过实测数据,详细评估了不同方法在推理速度、CPU占用、内存消耗及模型精度上的表现,并提供了从模型结构调整到系统级优化的具体建议,为边缘AI部署选型提供实用参考。

weixin_29099217的博客 531

sjtu oj 1008.二哥买期货

#include #include using namespace std; int dayOfMonth[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; struct Date { int y,m,d; int leap() { return (y%4=

u013732928的专栏 1774

ArcGIS Pro 制作这种地图海报

ArcMap 版本与 ArcGIS Pro 版本的制图功能相差太多,无论从美观上还是制图效率都远远优于 ArcMap,用了一段时间的 ArcGIS Pro ,真心推荐有条件的大家赶紧试一试!一个软件也能搞定一张不错的海报哦!----吐槽:好的设计真的是门花时间的活,这个教程大概花了我7小时左右,我都忘了我自己教程中截图多少张了!(可能是我速度太慢了)测试数据:阿里云盘分享-----北极海冰数据.https://www.aliyundrive.com/s/SUhsnqfkmXh。

J_Giser的博客 1430

sjoj学习笔记 1008 二哥买期货

#include #include using namespace std; Int dayOfMonth[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};   //定义日期的结构体,用来判断平年闰年,判断某个日期是这周的第几天 //这个方法要将每年的1,

hoshii77的博客 904

【C++】开源:cpp-httplib HTTP协议库配置与使用

cpp-httplib HTTP协议库配置与使用

DevFrank的博客 5542

【2025年美团春招(算法岗)-3月15日-第三题(300分)- 字符串权值】(题目+思路+Java&C++&Python解析+在线测试)

小美定义一个字符串的权值为:其长度为3的回文子序列数量。例如,“abca"的权值为2,因为包含两个回文子序列"aba"和"aca现在给定一个仅包含小写字母的字符串,小美希望你输出该字符串每个前缀的权值。

m0_73659489的博客 312

sjtu oj 1008 二哥买期货问题

1008. 二哥买期货Description二哥想知道在一段时期内,一共有多少个交易日。期货交易日的限定如下:周六、周日不能交易元旦期间(1月1日)不能交易五一劳动节期间(5月1日至3日)不能交易十一国庆节期间(10月1日至7日)不能交易没有在上述要求中提到的日期均可交易Input Format第一行有一个整数n,表示一共有n组数据。每组数据都有一行,是两个用空格分开的日期,...

weixin_34110749的博客 121

【WorkBuddy专栏36】从踩坑到上线——WorkBuddy代码开发避坑指南与部署完全手册

【WorkBuddy专栏36】从踩坑到上线——WorkBuddy代码开发避坑指南与部署完全手册

AI人人懂 1074

USACO赛事简介2023-2024

USACO月赛一年有3次,一般在每年的12、1、2月进行,选手可在同一年多次参加比赛。本人深耕编程教育多年,信息学奥赛讲师,有问题私信

meng755的博客 1053

[QMT量化交易小白入门]-七十六、从tick数据中获取高频交易的量价背离信号

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 792

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

[USACO22JAN] Tests for Haybales G

Farmer John 的奶牛们决定为 Farmer Nhoj 农场的奶牛们举办一场编程竞赛。为了使问题尽可能有趣,他们花费了大量时间来构造具有挑战性的测试用例。特别是对于一个问题,「Haybales」,奶牛们需要你的帮助来设计具有挑战性的测试用例。可以证明这一定是可行的。请帮助 Farmer John 的奶牛们解决这一问题!给定这些信息,Farmer John 的奶牛需要构造任意一个数组以及整数。(通过人类智慧)发现树的 dfs 序完美不符合条件,于是令。之间连边,最终会得到一棵树,以。

dygxczn的博客 1246

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

关于美国计算机奥赛USACO,你想知道的都在这

USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。 USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。 适合参赛人群 USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第

oHuaChuan的博客 3629

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

日志11:dfs剪枝例题

一个如下的 6×66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。前三行为前三个解,每个解的两个数字之间用一个空格隔开。第四行只有一个数字,表示解的总数。i++)//占领列 x行i列。请编一个程序找出所有棋子放置的解。对于 100%100% 的数据,6≤�≤136≤n≤13。一行一个正整数 �n,表示棋盘是 �×�n×n 大小的。列号 2 4 6 1 3 52 4 6 1 3 5。void dfs(int x)//x行。

Cziq7的博客 574

USACO2022DEC Bronze Reverse Engineering题解

这道题虽然是黄题,但其思维难度也不逊于一道蓝题,所以在AC后总结思路,写下此文。

Charlie's Blog 1025

24/01/26总结

今天把该刷的题刷完了,明天休息一天。

m0_66349413的博客 819
上一篇: Ubuntu 16.04 安装monaco字体
下一篇: 交大oj-1009-二哥炒股票 C++ 总结
code_nie
博客等级 码龄9年 6粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值