CCF認證 201503-3節日
阿新 • • 發佈:2018-12-17
被令人恐懼的力量支配,每道題都只拿90分,慌得不行,我是不是該換語言了。。。
思路
先算出當前年的1月1號,距離baseYear多少天(方便算出星期幾)再算出該年的a月1號,距離baseYear的1月1號多少天。最後根據第幾個星期幾,求一下多少天。
當時腦子抽了,以為1月1號是星期四 , 那麼就沒有第1個星期三,因此40分。 最後還是不能得100,不知道為啥
程式碼
import java.util.Scanner; public class Main{ private static Scanner cin; public static int []months = {0,31,28,31,30,31,30,31,31,30,31,30,31}; public static void main(String[] args) { cin = new Scanner(System.in); int a ,b,c,y1,y2; a = cin.nextInt(); b = cin.nextInt(); c = cin.nextInt(); y1 = cin.nextInt(); y2 = cin.nextInt(); int day = 0,y; // 得到2014年1月1日到1850年1月1日共幾天 for(y = 1850;y<y1;y++){ if(isRun(y)) day += 366; else day += 365; } // 得到a月1號 到初始值共幾天 for(;y<=y2;y++){ int tmpDay = day; for(int m = 1; m < a; m++){ if(m == 2 && isRun(y)){ tmpDay += 29; }else tmpDay += months[m]; } int weekDay = (tmpDay%7+2)%7; if(weekDay == 0) weekDay = 7; // System.out.println(a+" 月的1號是 "+weekDay); int needDay; if(c >= weekDay) needDay = (b-1)*7 + c - weekDay+1; else needDay = (b-1)*7 + c + 7 - weekDay + 1; if(needDay>months[a]) System.out.println("none"); else { String output = y + "/"; if (a < 10) output += "0"; output += a + "/"; if (needDay < 10) output += "0"; output += needDay; System.out.println(output); } day += 365; if(isRun(y)) day ++; } } static boolean isRun(int y){ if(y%400 == 0) return true; if(y%4==0 && y%100 != 0) return true; return false; } }