像2017102這樣正反念一樣的日期常見嗎?
大概幾年一次?距離說明,最好有理論依據。
這日期不規範。
規範日期應為20171002、20170102。顯然,20200202、20211202很符合。常見。統計了一下1800-2200年的迴文日期,包括月、日含0、不含0的所有情況,以迴文日期間隔天數對迴文日期作圖。當年份用四位數時:
最近幾年平均半年就出現一次(2017.1.02,2017.10.2),然後大概一年出現一次(2046.4.02),但是20世紀很長一段時間十一年才出現一次(1966.9.1)。
當年份用兩位數時更常見:
最頻繁的時候十天出現一次(91.1.9 ~ 91.1.19),次頻繁一兩個月出現一次(10.6.01),不頻繁的時候大概一年出現一次(17.7.1),極端條件下六年出現一次(03.11.30 ~ 10.1.01)。
哈哈,今天看見有人發這樣一個消息了,也看見有人說1000年才遇到一次,即3017103,我一看就偷著樂了呀,哈哈哈,這數字幾乎每年都有啊。
比如說:
2018102、2019102、2010102、2011102
and so on~贊同楊鵬遠的回答,我想說的是,我十分懷疑這個是有人為了製造話題而有意製造的營銷內容。
謝邀
唉,反正這幾天無聊,就當消磨時間吧
2844822941一條隨意的分割線2456695155
首先我們要搞清楚是否用0佔位
10.2(未佔位)10.02(佔位)
如果佔位的話,(在年數為四位數時)日期的格式始終為abcd.ef.gh
我們知道
a≠0e=0,1當e=0時,f≠0;當e=1時,f=0,1,2g=0,1,2,3(當e=0且f=2時,g≠3)當e,f,g分別等於(0,2,2)時,若abcd不是4或400的倍數或是100的倍數而不是400的倍數,則h≠9當e,f,g分別等於(0,1,3),(0,3,3),(0,5,3),(0,7,3),(0,8,3),(1,0,3),(1,2,3)時,h=1只要不與上面的條件矛盾,對稱一下,我們就知道這一年會不會有這麼一天
比如2011.11.02,2020.02.02,7280.08.27如果不佔位的話就複雜很多了
我們先確定在這一個世紀內
那麼就是20xx年,某月,2日(因為不佔位,所以沒有02日,直接2日)再將0對稱過來,月份的個位就是0,又因為沒有0月,所以月份就是10所以就是201(對稱過來)x.10.2所以2010到2019這10年都有這一天然後21世紀就沒有了……我們不妨再看看22世紀的情況(雖然可能到不了那一年了)
那麼就是21xx年,某月,某日當日期是2日,且月份是1時,即為21xx.1.2.那麼2100年(00後,10後貌似還到得了那一天),2111年,2122年,……,2199年都有這一天當日期是2日,且月份是11時,即為21xx.11.2,即為211x.11.2.那麼2110年到2119年都有這一天。也就是說2111年的1月2日(2111.1.2)和11月2日(2111.11.2)都對稱既然都說到這裡,我不說你也可能知道了2111年的1月12日(2111.1.12)和11月12日(2111.11.12)也對稱當日期是12日時,即為21xx.某.12.那麼一共有93年符合除去重合的,22世紀一共有93年有這樣一天或幾天營銷號製造話題熱度的最好方式就是故意造謠,而且要造一個是個人都能看出來的低級謠言,這樣才能最快速度製造熱度。以此例為例,營銷號真的不知道按他的演算法明年就有同樣的日子嗎?不,他肯定知道。但為了製造流量,他故意寫「1000年才有一次」這個低級謠言,這樣大家都會為了闢謠而轉發,熱度就上來了。
歪個樓,其實每一天對你,對我,都是最獨一無二的一天,不是嗎?
【P2010】迴文日期 - 洛谷
另2018102
本來要用C++寫,但是發現日期這個玩意官方給的太難用,於是用C#來寫,
在1年1月1日開始至9999年12月31日,一共有4286天反過來都一樣
public static void Main()
{
DateTime date = new DateTime(2000, 1, 1);
int count = 0;
for (;;)
{
if (date.Year == 2099 date.Month == 12 date.Day == 31) break;
int ysize = 0, msize = 0, dsize = 0;
string defaultDateString = DateTimeToString(date);
//將各部分分開
string[] ns = defaultDateString.Split(a);
//得到各個部分的長度
ysize = ns[0].Length;
msize = ns[1].Length;
dsize = ns[2].Length;
//去掉本來的a,然後翻轉
string removed = defaultDateString.Replace("a", "");
string changed = ReverseToArray(removed);
DateTime ReverseDate = ReverseDateTime(changed, ysize, msize, dsize);
if (date == ReverseDate)
{
Write(date.ToString("yyyy-MM-dd") + " " + ReverseDate.ToString("yyyy-MM-dd") + " ");
WriteLine(date == ReverseDate);
count++;
}
date = date.AddDays(1);
}
WriteLine(count);
}
private static string DateTimeToString(DateTime date)
{
return date.Year.ToString() +"a"+ date.Month.ToString() +"a"+ date.Day.ToString();
}
public static string ReverseToArray(string date)
{
char[] c = date.ToCharArray();
Array.Reverse(c);
return new string(c);
}
public static DateTime ReverseDateTime(string dateString, int ysize, int msize, int dsize)
{
List&
for (int i = 0; i &< ysize; i++)
list.Add(dateString[i]);
string year = new string(list.ToArray());
list.Clear();
for (int i = ysize; i &< msize + ysize; i++)
list.Add(dateString[i]);
string month = new string(list.ToArray());
list.Clear();
for (int i = ysize + msize; i &< msize + ysize + dsize; i++)
list.Add(dateString[i]);
string day = new string(list.ToArray());
list.Clear();
DateTime newdate;
try
{
newdate = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day));
}
catch(Exception)
{
newdate = new DateTime(9999, 12, 31, 1, 12, 3);
}
return newdate;
}
推薦閱讀: