题目描述:
Redraiment的老家住在工业区,日耗电量非常大。是政府的眼中钉肉中刺,但又没办法,这里头住的可都是纳税大户呀。 今年7月,又传来了不幸的消息,政府要在7、8月对该区进行拉闸限电。但迫于压力,限电制度规则不会太抠门,政府决定从7月1日停电,然后隔一天到7月3日再停电,再隔两天到7月6日停电,一次下去,每次都比上一次晚一天。 Redraiment可是软件专业的学生,怎么离得开计算机。如果停电,就“英雄无用武之地”了。呵呵。 所以他开始盘算起自己回家的日子了,他想知道自己到家后到底要经历多少天倒霉的停电。你能帮他算一算吗?
输入:
redraiment到家的日期:7,2
输出:
redraiment回家后遭遇停电的天数(包括到家那天):9
函数原型:
int GetDayNum(int Month, int Day);
解题思路:
先把7,8两个月的停电日期存储起来,然后用到家那天去匹配停电的日期。
public class Demo
{
- public int getDayNum(int month, int day)
- {
//todo
- List
- int a = 1; // a存储停电的日期
- int i = 2; // 两个停电日期之间相差的天数
- while(a<63){ // 7,8两个月总共62天
- list.add(a);
- a = a + i;
- i++;
- }
- int value = 0;
- if(month == 8){
- value = 31 + day; //如果是8月份,那么日期排在32 ~ 62之间
- }
- else{
- value = day;
- }
- if(value>55) return 0; //如果是7月24日后回来不会停电
- else {
- int index = list.lastIndexOf(value); //查找回来的日期是否是停电的日期
- while(index ==-1){ //如果不是,则查找往后的最近的一次停电的日期
- value++;
- index = list.lastIndexOf(value);
- }
- return (list.size()-index);
- }
- }
- }