人人都有极客精神
http://www.jisuanke.com/minicourse/59/438
人人公司是一家極為鼓勵極客精神的公司,當有重要的項目需要上線但又時間太緊,甚至需要當天上線的時候,往往會掛起海盜旗開啟電子日期顯示,讓大家可以在對時間有更明確的感知的情況下,同心協力搞定重要的項目。海盜旗下方的電子屏顯示的日期形式為 YYYYMMDD (年份占 4 位、月份占 2 位、天數占 2 位)。
日期電子屏幕上每個數字對應的顯示如下圖:
從上圖可以得知每個數字對應的筆畫數,比如 2 的筆畫數是 5,8 的筆畫數是 7,等等。人人員工小明看到了項目的啟動日期 d,但是項目的結束日期沒看清楚,只知道電子屏幕上項目結束日期所需的筆畫數為 m,你能幫小明算出來項目執行所用的時間天數么?
輸入格式
輸入數據有多組。第一行輸入一個整數 T (1 ≤ T ≤ 20),表示一共有 T 組數據。
接下來每組數據 2 行,共 T * 2 行。每組第一行輸入一個長度為 8 的僅包含數字的字符串 d,表示項目的啟動日期,形式為 YYYYMMDD。每組第二行輸入一個非負整數 m (0 ≤ m ≤ 100),表示電子屏幕上項目結束日期所需的筆畫數。輸入日期保證合法。
輸出格式
一共輸出 T 行,每行一個整數,表示該組數據對應的項目執行所用的時間天數。如果最近的符合要求的結束日期超過 2999 年 12 月 31 日或無解則輸出 -1,否則輸出符合要求的最小的解。
樣例1
輸入:
2 20150718 30 29991231 38輸出:
85 -1http://paste.ubuntu.com/11897447/
結束日期肯定比開始日期晚,程序又讓你計算持續天數,所以ans++,筆畫數控制程序結束
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; int year[3000], month2[13], day[40]; int s[10] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; // 存第幾個數需要幾筆畫數 int month1[2][13] = {0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31}; // month[0]存不是閏年當前月份天數 void init () {for (int i=0; i<40; i++)day[i] = s[i%10] + s[i/10]; // 第幾天所需筆畫數,第一天是0和1所需筆畫數之和for (int i=0; i<13; i++)month2[i] = s[i%10] + s[i/10]; // 第幾月所需筆畫數,12月是1和2所需筆畫數之和memset(year, 0, sizeof(year));for (int i=0; i<3000; i++){int m = i;for (int j=0; j<4; j++){year[i] += s[m%10]; // 第幾年所需筆畫數2015年是數字2,0,1,5所需筆畫數之和m /= 10; }} } int main () {init();int t, y, m, d, num, ans;scanf ("%d", &t);while (t --){int flag = 0;ans = 0;scanf ("%4d%2d%2d", &y, &m, &d);if (y%400==0 || (y%4==0)&&(y%100!=0)) // 是否閏年flag = 1; scanf ("%d", &num);while (true){int nu = year[y] + month2[m] + day[d]; // 當前所到日期所需筆畫數if (nu == num) // 相等結束whilebreak;if (y==2999 && m==12 && d==31){ans = -1; break;}d ++; // 每次d+1,ans+1,當加到日期筆畫數和輸入相同時結束whileans ++;if (month1[flag][m] < d) {d -= month1[flag][m]; // 月份< d時,天數從0開始下月計算,月份m+1m ++;} if (m > 12) // 月份大于12,下一年開始計{m -= 12;y ++;if (y%400==0 || (y%4==0)&&(y%100!=0))flag = 1;elseflag = 0;}}printf ("%d\n", ans); // 輸出天數}return 0; }
?
轉載于:https://www.cnblogs.com/Tinamei/p/4658133.html
總結
- 上一篇: ios 简书 获取通讯录信息_ios 获
- 下一篇: 修改虚拟机设置过游戏检测