九个月零十天是几周?
9个整月,10天,10除以7等于1余3,因此就是周数的下限了(实际多了一天); 9X4=27(天),27+10=37(天),37除以30等于108.......17,因此这是一个月的第108天,也就是末月的第3天,或者下个月的第一天。那么这剩下的108天内再发生一个双数日,比如初二的第二天,或者十五的第二天等等。
注意,这样计算得出的结果一定是整个月最多可以有多少天以及该月份的最后一天和下个月的的第一天具体是哪一天。 当然这个算法太麻烦了,其实我们可以用一个简单的函数来解决: 定义f(n)为总天数,则f(6)=51(自然数从0开始计数),f(13)=87,f(26)=146,........ f(-3)=176,f(-2)=181,f(-1)=186 当输入负值的时候,说明需要向前推算,其原理跟上述算法一样,只不过最后得到的结果不需要进行加一处理。 当输入正值的时候,说明需要向后推算,这时需要注意了! 由于每个月的最大天数是固定的,当我们输入一个月的日期后,通过函数判断该日期是否大于当月最大日期,如果大于就重新输出该月份的初始日期即月初的第一天的日期,然后再调用一次函数求出整个月份的天数,再加上第一个函数的返回值,就得到了完整的答案。 举个例子:假如我想知道2017年12月1日到2018年1月1日之间一共多少天。
先输入年号:2017,然后输入月份12(用函数判断得到的),再用函数求得当天及之后的一天(或者前后各两天)的总天数【特别注意这里加上去的数字一定是1和30的倍数】,再加一便得。 整个程序就这样了,用python语言实现很方便,我测试了一下,所有输入都正确。