- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
该问题要求计算一周中每一天的第 13 个数。这是我的代码。
class CopyOffriday {
public static void main(String[] args) throws IOException {
BufferedReader f = new BufferedReader(new FileReader("friday.txt"));
int n1=Integer.parseInt(f.readLine());
int[] counter=new int[7];
int N=1900+n1-1;
int position=1; //first 13th is a Saturday
for(int i=1900; i<=N;i++){
for(int month=1; month<=12;month++){
if((i==1900)&&(month==1)) counter[position-1]++;
else if((i==N)&&(month==11)){
position+=2;
position%=7;
counter[position-1]++;
System.out.println(i+" "+month+" "+ position+" ");
break; }
else if((month==4)|| (month==6)||(month==8)||(month==11))
position+=2;
else if(month==2){
if((i%400==0)||((i%100!=0)&&(i%4==0)))
position+=1;
else
position+=0; }
else
position+=3;
if(position>7) position%=7;
counter[position-1]++;
System.out.println(i+" "+month+" "+ position+" ");
}
}
for(int x : counter){
System.out.print(x+" ");
}}
我真的很困惑,因为我的逻辑给出了错误的答案。我所做的是增加天数,即 31 天月份为 3 天,30 天月份为 2 天等,并将其添加到职位中。但它给出了错误的答案。
我的逻辑有什么问题。
我对被困在这个简单的问题上感到非常沮丧。非常感谢所有帮助。
谢谢!
最佳答案
明白了!
for (int i = 1900; i <= N; i++) {
for (int month = 1; month <= 12; month++) {
if ((i == 1900) && (month == 1)) {
counter[position - 1]++;
position = 31%7 + 1;
}
有两个错误,首先应该是 9 而不是 8。我们遵循的一般逻辑是我们知道 1900 年的第一个 13 日。一旦你输入了 1900 年 1 月的代码,你需要做两件事。首先,增加星期六的计数,然后由于 1 月有 31 天,您循环查找 2 月的第 13 天,即您在同一段代码中从 1900 年 1 月 13 日移动到 1900 年 2 月 13 日,这是通过添加 31 天来完成的这是 2 月 13 日到 1 月 13 日之间的天数。要将其转换为一天,您需要执行 31%7(在您的情况下为 +1,因为您的编号从 1 开始)。因此,在 month = January 的循环中,您也增加了 Feb。
对于 month = Feb,您循环查找 March 的日期并在 for 循环结束时递增。类似地,在循环 month = Nov 中,您循环查找 Decemeber 的日期,然后如果该年是最后一年则中断,以免溢出到下一年。如果这一年不是最后一年,您将进入
if ((month == 4) || (month == 6) || (month == 9)
|| (month == 11))
并在不中断的情况下完成 12 月的常规业务和增量。对于 month = December,您增加次年 1 月 13 日的天数,从而允许我们隔离 1900 年 1 月的特殊情况,因为任何其他年份的 1 月将跳过所有 if 语句并执行
position += 3;
没有任何问题。特例:
if ((i == 1900) && (month == 1)) {
counter[position - 1]++;
position = 31%7 + 1;
}
您的完整代码。
public static void main(String[] args) throws IOException {
// Use BufferedReader rather than RandomAccessFile; it's much faster
BufferedReader f = new BufferedReader(new FileReader(
"/home/shaleen/USACO/friday/friday.in"));
// input file name goes above
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(
"/home/shaleen/USACO/friday/friday.out")));
// Use StringTokenizer vs. readLine/split -- lots faster
// StringTokenizer st = new StringTokenizer(f.readLine());
// Get line, break into tokens.
int n1 = Integer.parseInt(f.readLine());
int[] counter = new int[7];
int N = 1900 + n1 - 1;
int position = 1; // first 13th is a Saturday
for (int i = 1900; i <= N; i++) {
for (int month = 1; month <= 12; month++) {
if ((i == 1900) && (month == 1)) {
counter[position - 1]++;
position = 31%7 + 1;
}
else if ((i == N) && (month == 11)) {
position += 2;
position %= 7;
counter[position - 1]++;
System.out.println(i + " " + month + " " + position + " ");
break;
} else if ((month == 4) || (month == 6) || (month == 9)
|| (month == 11))
position += 2;
else if (month == 2) {
if ((i % 400 == 0) || ((i % 100 != 0) && (i % 4 == 0)))
position += 1;
else
position += 0;
} else
position += 3;
if (position > 7)
position %= 7;
counter[position - 1]++;
System.out.println(i + " " + month + " " + position + " ");
}
}
for (int x : counter) {
System.out.print(x + " ");
}
}
}
关于java - 美国 : friday the thirteen what's wrong with my logic?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726140/
Closed. This question is opinion-based。它当前不接受答案。 想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 上个月关闭。
我正在 VHDL 中实现正交解码器,并提出了两种解决方案。 在方法 1 中,所有逻辑都放在一个对时钟和复位敏感的进程中。 在 Spartan-3A 上,这使用四个切片、七个 FF 和四个输入 LUT。
我现在在我的项目中使用 Logic-Apps。我认为这很好而且很容易!但是,在逻辑编码过程中很难调试。因为我无法在代码的中间点确认变量或状态。通常,开发人员可以在 Visual Studio 上执行程
我试图让一个方法仅在 unicode 字符的 char 值是数字、大写字母或小写字母时才采取操作。 if ((48=57)||(65=90)||(97=122) // only if numeral
所以我得到了我编写的代码示例。我的目标是打印存储在 ptr char 变量中的句子中的数字。所以代码的第一部分完成了这项工作。 #include #include void preg(char *
我有很多 JavaScript 遗留代码,我想重写所有松散的等式以使用严格的等式,即。 == 与 ===。但我常常不知道比较变量存储的是什么值。 在不知道这些值是什么的情况下,有没有办法重写这样的东西
我在尝试附加包 tidyselect 和尝试调用 tidyselect::any_function 时遇到此错误。 错误发生在 Rstudio 或类似的命令行中,在 RStudio 中它会在我输入时立
有什么方法可以在调用子逻辑应用时动态更新工作流: 正常工作流程配置如下: 我想要实现的目标如下,使用属性、变量任何更新运行时的工作流程,我尝试使用如下: 当我尝试按上述方式保存时,结果为错误:保存失败
有什么方法可以在调用子逻辑应用时动态更新工作流: 正常工作流程配置如下: 我想要实现的目标如下,使用属性、变量任何更新运行时的工作流程,我尝试使用如下: 当我尝试按上述方式保存时,结果为错误:保存失败
例如,考虑逻辑“用户只能编辑或删除该用户发表的评论”。 My Controller Actions会重复检查当前登录用户是否可以影响评论的逻辑。示例 [Authorize] public Action
在基于规则的专家系统中,知识库包含大量“if (template) then (action)”形式的规则。推理引擎选择与输入事实相匹配的规则。即那些条件部分与输入数据相匹配的规则被列入候选名单,并选
谁能解释一下这个分离逻辑的例子? 第一行和第二行有什么区别? 最佳答案 第一行说堆只包含一个小堆,因此存储中的引用 x 指向它,并且它包含值 4,4。 在 A 中为假,因为它忘记了 y 指向的小堆(它
我尝试了几天编写 NLTK 语法来将简单的法语句子转换为逻辑公式。我的问题可能与英语句子相似。我的目标是这个语法接受多个订单(家庭自动化)并将它们转换为逻辑公式。一些订单示例: 开灯: exists
我正在大学/学院学习自然演绎,作为我正式规范和验证计算机科学类(class)的一部分。 我觉得这很有趣,但是当我找到实际用途时,我会学得更好。 谁能向我解释除了用于正式验证代码位之外是否以及如何使用自
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
物理量子位和逻辑量子位有什么区别? 我希望有人能帮助我解决这个问题,我无法弄清楚到底有什么区别。 最好的,迪尔玛 最佳答案 逻辑量子位是可以用于编程的,它保存了 |0> 和 |1> 状态的叠加。它可以
我正在尝试学习如何使用 C++ 修改内存位置,并且在使用 MineSweeper 时,我注意到当内存中的时钟值为 1101004800 时,游戏进入了 20 秒。数字 1101529088 对应于游戏
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
首先介绍一些术语(取自here,第14页): 正程序是有错误的程序。 否定程序是没有错误的程序。 因此,程序有四种类型: 积极计划,分析为积极->真正积极(TP)。 积极计划,分析为否定->假否定(F
任何人都可以推荐可用于评估逻辑表达式的软件(最好是mac)或基于网络的工具吗? 例如,我希望能够快速测试两个表达式是否如下: $a = 'foo'; $b = 'bar'; $c = 'foo'; (
我是一名优秀的程序员,十分优秀!