国王的魔镜
?國王的魔鏡?(Standard IO)
時間限制:?1000 ms??空間限制:?262144 KB??具體限制??
題目描述
國王有一個魔鏡,可以把任何接觸鏡面的東西變成原來的兩倍——只是,因為是鏡子嘛,增加的那部分是反的。
比如一條項鏈,我們用AB來表示,不同的字母表示不同顏色的珍珠。如果把B端接觸鏡面的話,魔鏡會把這條項鏈變為ABBA。如果再用一端接觸的話,則會變成ABBAABBA(假定國王只用項鏈的某一端接觸魔鏡)。
給定最終的項鏈,請編寫程序輸出國王沒使用魔鏡之前,最初的項鏈可能的最小長度。
輸入
只有一個字符串,由大寫英文字母組成,表示最終的項鏈(長度<=255)。
輸出
只有一個整數,表示國王沒使用魔鏡前,最初的項鏈可能的最小長度。
樣例輸入
ABBAABBA?樣例輸出
2主題思路
1.這道題其實是考一個回文字符的題目
2.字母個數是復數且是回文字符就減半
3.字母減半時遇到單數就停,不然會錯
證明思路過程:】
樣例1:
ABBAABBA [雙數 and 回文(減半)] (長度:8/2=4);
ABBA [雙數 and 回文(減半)] (長度:4/2=2);
AB [雙數 but 不回文(停,輸出)] cout<<2 // printf("%d",a)[a=2];
樣例2:
AAAAAAAAAAA [回文 but 不是雙數(停,輸出)] cout<<11 // printf("%d",a)[a=11];
樣例3:
ABXDCCDXBAABXDCCDXBA [雙數 and 回文(減半)] (長度:20/2=10);
ABXDCCDXBA [雙數 and 回文(減半)] (長度:10/2=5);
ABXDC [不回文 and 不是雙數(停,輸出)] cout<<5 // printf("%d",a)[a==5]
核心代碼:
for(int i=0;i<len;i++){b[j]=a[i];j--;}for(int i=0;i<len;i++){if(a[i]!=b[i]) bz=false;}總結
- 上一篇: 芯片制造和芯片技术研发同时突破,中国芯片
- 下一篇: 共享单车的电子围栏——基于RTK技术的高