2015年华为机试初级——Redraiment的遭遇

题目描述:
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 list = new ArrayList(); //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);
    }
    }
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*