題目:click
題意:星期一在每個月的1號,11號,21號,則是幸運的,給定乙個時間,問從此開始的第n個幸運的日期是什麼。
n是非常大的,打表找個規律,從1753-1-1開始找1月1號的年份存下來,暴力找到是56,112,確定週期是52,相減得年份週期是400,之間有2058個幸運周。之後直接暴力即可。中途注意一些細節,可以帶入具體的邊界值進行運算規律。
(打表**)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3f
#define max_len 200005*4
using
namespace std;
typedef
long
long ll;
typedef pair<
int,
int> pp;
const
int mod=
998244353
;int a[20]
=;int b[10]
=;struct a que[
1000100];
int len=0;
intmain()
}if((year%4==
0&&year%
100!=0)
||year%
400==0)
else
day++
; xq++
; tot++;if
(xq>7)
xq-=7
;if(day>a[month])}
}int i;
len--
;for
(i=0
;i)// coutfor(
int temp=
1;temp<=
150;temp++)if
(i+temp>=len)
printf
("%d\n"
,temp);}
cout<.y<<
" "<.y<<
" "<.y-que[0]
.y
}
預先處理出2058*2的乙個迴圈表。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3f
#define max_len 200005*4
using
namespace std;
typedef
long
long ll;
typedef pair<
int,
int> pp;
int a[20]
=;struct a
;map<
int,a>hh;
void
init()
if((year%4==
0&&year%
100!=0)
||year%
400==0)
else
day++
; xq++;if
(xq>7)
xq-=7
;if(day>a[month])}
}for
(int i=
1;i<=
2058
;i++)}
intmain()
} n--
;int t1=n/
2058
;int t2=y+
400*t1;
n-=t1*
2058
;while
(n--
) t2+
=hh[temp]
.y-temp1;
printf
("%d %d %d\n"
,t2,hh[temp]
.m,hh[temp]
.d);
}return0;
}
1 2 日期函式
1.2 日期函式select sysdate from dual 顯示的日期格式是系統預設格式 select to char sysdate,yyyy mon dd hh24 mi ss systime from dual 用途 使用者註冊時間的插入 insert into user table n...
201509 2 日期計算
試題編號 201509 2 試題名稱 日期計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定乙個年份y和乙個整數d,問這一年的第d天是幾月幾日?注意閏年的2月有29天。滿足下面條件之一的是閏年 1 年份是4的整數倍,而且不是100的整數倍 2 年份是400的整數倍。輸入格...
1928 日期差值
時間限制 1 sec 記憶體限制 32 mb 提交 2590 解決 640 提交 狀態 討論版 命題人 外部匯入 有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 每組資料輸出一行,即日期差值 2...