问题描述
有一类节日的日期并不是固定的,而是以“a月的第b个星期c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。
  现在,给你a,b,c和y1, y2(1850 ≤ y1, y2 ≤ 2050),希望你输出从公元y1年到公元y2年间的每年的a月的第b个星期c的日期。
  提示:关于闰年的规则:年份是400的整数倍时是闰年,否则年份是4的倍数并且不是100的倍数时是闰年,其他年份都不是闰年。例如1900年就不是闰年,而2000年是闰年。
  为了方便你推算,已知1850年1月1日是星期二。
输入格式
输入包含恰好一行,有五个整数a, b, c, y1, y2。其中c=1, 2, ……, 6, 7分别表示星期一、二、……、六、日。
输出格式
对于y1和y2之间的每一个年份,包括y1和y2,按照年份从小到大的顺序输出一行。
  如果该年的a月第b个星期c确实存在,则以"yyyy/mm/dd"的格式输出,即输出四位数的年份,两位数的月份,两位数的日期,中间用斜杠“/”分隔,位数不足时前补零。
  如果该年的a月第b个星期c并不存在,则输出"none"(不包含双引号)。
样例输入
5 2 7 2014 2015
样例输出
2014/05/11
2015/05/10
评测用例规模与约定
所有评测用例都满足:1 ≤ a ≤ 12,1 ≤ b ≤ 5,1 ≤ c ≤ 7,1850 ≤ y1, y2 ≤ 2050。

思路:这道题主要在于

1、第几个月。

2、第几个星期。

3、a月份第一天是星期几(即确定一个标准时间点)

由此

1、确定时间点。有1850年1月1日对应星期二,那么对于y1年的第a月的第一天是星期几?

针对这个问题,需要求出从1850年1月1日到y1年1月1日有几天,并且如果天数正好被7整除,那么说明y1年1月1日就是星期二;如果余数为1,那么就是星期三,以此类推。但有一个很重要的点,要与a b c衔接,这个问题在2中会提到

2、题目问是几号,即从标准时间点(即a月1号)开始到第b个星期c。从a月1号开始已经是第一个星期,并且到这第一个星期结束共有:7减去(a月1号对应的星期数)+1;那么从第一个星期结束之后的第二个星期的第一天到第b个星期c总共的天数就是(b-2)*7+c。那么从标准时间点到a月的b个星期的c天,总共有:

7减去(a月1号对应的星期数)+1+(b-2)*7+c

但是上述过程只是针对余数从0到5,当余数为6时,2+6=8,超出7天范围,这时候就不能够用上述公式求解,而应换成:(b-1)*7+c。因为此时这一天必定是2+6=8转为星期一,此时就可以直接求解。

import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
int y1=sc.nextInt();
int y2=sc.nextInt();
int y11=Math.min(y1,y2);
int y22=Math.max(y1,y2);
int tian=-1;
for(int t=y11;t<=y22;t++)
{
int days=0;
for(int i=1850;i0&&tian<=31))
{
System.out.println("none");
}
else
{
if(a<10)
{
if(tian<10)
System.out.println(t+"/0"+a+"/0"+tian);
else
System.out.println(t+"/0"+a+"/"+tian);
}
else
{
if(tian<10)
System.out.println(t+"/"+a+"/0"+tian);
else
System.out.println(t+"/"+a+"/"+tian);
}
}
}
if(a==2&&(t%400==0||(t%4==0&&t%100!=0)))
{
if(!(tian>0&&tian<=29))
{
System.out.println("none");
}
}
if(a==2&&(!(t%400==0||(t%4==0&&t%100!=0))))
{
if(!(tian>0&&tian<=28))
{
System.out.println("none");
}
else
{
if(a<10)
{
if(tian<10)
System.out.println(t+"/0"+a+"/0"+tian);
else
System.out.println(t+"/0"+a+"/"+tian);
}
else
{
if(tian<10)
System.out.println(t+"/"+a+"/0"+tian);
else
System.out.println(t+"/"+a+"/"+tian);
}
}
}
if(a==2||a==4||a==6||a==9||a==11)
{
if(!(tian>0&&tian<=30))
{
System.out.println("none");
}
else
{
if(a<10)
{
if(tian<10)
System.out.println(t+"/0"+a+"/0"+tian);
else
System.out.println(t+"/0"+a+"/"+tian);
}
else
{
if(tian<10)
System.out.println(t+"/"+a+"/0"+tian);
else
System.out.println(t+"/"+a+"/"+tian);
}
}
}
}
}

但是只有40分,,,

ccf 节日 java 思路相关推荐

  1. 百度工程师亲授CCF BDCI解题思路,15万大奖等你来拿

    在人工智能和大数据竞赛领域,由中国计算机学会举办的CCF大数据与计算智能大赛(CCF BDCI)一直是众多开发者追逐的顶级赛事. 本届大赛值得关注的是,百度和清华大学在算法赛道贡献了"千言: ...

  2. 第十二届蓝桥杯A组省赛填空题Java思路及代码合集(相乘直线货物摆放路径回路计数)

    文章目录 试题 A: 相乘 试题 B: 直线 试题 C: 货物摆放 试题 D: 路径 试题 E: 回路计数 试题 A: 相乘 本题总分:5 分 [问题描述] 小蓝发现,他将 1 至 100000000 ...

  3. java思路_java编程的思路

    展开全部 java基本编程思路: 第一步:写框架(内层和外层32313133353236313431303231363533e78988e69d8331333337623463): public cl ...

  4. ccf认证java编程环境是什么_CSP/CCF 认证, 关于编程语言选择.

    认证来了! 最近学校组织进行新一轮的 CSP/CCF 认证, 对算法不熟悉没什么底, 准备从今天开始练习一下基础. 认证前, 我知道什么? 说一下认证前的准备吧, 首先就纠结在报名的语言上了, 本来以 ...

  5. ccf画图java详细解析_ccfjava答案

    {"data":{"id":"8000-000000437045-0","name":"SEO专题页栏目分发组 ...

  6. url映射 ccf (Java正则表达式80分解法)

    问题描述 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django.Ruby on Rails 等 ...

  7. 斗地主 java思路_使用Java实现简单的斗地主案例

    使用Java实现简单的斗地主案例 案例说明:使用Java实现简单的斗地主洗牌发牌的操作: 具体规则: 共有54张牌,顺序打乱: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后留三张为底牌(地主牌) ...

  8. 求多项式浮点java思路,求多项式函数实数根的方法

    第29卷 第5期 Vol. 29No. 5昭通师范高等专科学校学报Journal of Zhaotong Teacher πs College 2007年10月Oct. 2007●数学 求多项式函数实 ...

  9. java用swing日历标记节日,java基于swing实现日历

    labels[i].setText(" "); } addCalendar();//调用改变标签内容的方法 } }; jb.addMouseListener(l); this.se ...

  10. 渔夫打鱼问题 java思路_心理故事:一个渔夫出海打鱼,怎么会饿死?

    渔夫的誓言 古时候有个渔夫,是出海打鱼的好手.可他却有一个不好的习惯,就是爱立誓言,即使誓言不符合实际,八头牛也拉不回头,将错就错. 这年春天,听说市面上墨鱼的价格很高,于是便立下誓言:这次出海只捕捞 ...

最新文章

  1. 某大学2021秋季学期Java期末考试范围概述
  2. Spring 依赖注入(DI)
  3. 新书预告《网络规划设计师考试考点分析与真题详解》
  4. 【植物大战僵尸2】算法 笔记
  5. OpenCASCADE:Modeling Data之拓扑
  6. 【Java语法】比较两个字符串是否相等
  7. java applog_java - 通过Logback登录到App Engine request_log - SO中文参考 - www.soinside.com
  8. php报错怎么改,php 怎么设置报错级别 和 控制报错[转]
  9. 同步工具类CyclicBarrier原理及使用
  10. anaconda navigator更新_Python 数据分析答疑 1:安装 Anaconda
  11. 适应科技发展观的Steam教学实践
  12. 【EJB】Developing EJB Applications -- Chapter 2(创建企业级Bean项目)
  13. bootstrap模板免费下载
  14. win10右键卡顿原因_右键菜单反应慢?win10系统解决右键菜单卡顿方法
  15. 高等代数中涉及到“正交”的名词总结
  16. windows server 2012 NIC组合---概念
  17. win10家庭版桌面软件图标左下角箭头删除
  18. swagger 接口参数顺序_swagger扩展为按代码定义顺序展示接口和字段
  19. Unity3d 在 twitter 转载(周报) UniteLA大会 和 Unity2019版本的Roadmap路线图
  20. 并发编程-25 高并发处理手段之消息队列思路 + 应用拆分思路 + 应用限流思路

热门文章

  1. php导航自助收录源码,最近网上流行的导航网秒收录网站php源码
  2. iOS 清理缓存简介
  3. ORB_SLAM2编译build_ros.sh时报错([rosbuild] Error from directory check: /opt/ros/kinetic/share)
  4. python3自动发送邮件并添加附件
  5. SOPC Builder failed to refresh PTF file
  6. 解决手机端页面的鼠标点击出现蓝色背景
  7. 车载ECU软件刷新flash driver制作
  8. 戴珊接替蒋凡,掌管淘宝天猫,阿里太子已被废?
  9. C# Activator.CreateInstance
  10. 台式机单硬盘安装黑苹果体验