題目:string change
把26個字母看成0~25對應的數字,當數慢慢增大時就對26取模,則字串有乙個總和s1,要使其變為末狀態的總和s2;那麼每交換一次s1要加2,故,s1+s2必須為偶數。兩個字母單獨處理,兩個以上時,
以三個數字為例,(a,b,c)為三個數,則有(a,b,c)->(a,c+1,b+1)->(c+2,,a+1,b+1)->(c再分別
和a,b各交換12次,有(c+26,a+13,b+13),再a,b相互交換13次得(c+26,b+26,a+26);
而26為乙個週期,即39次交換後由(a,b,c)->(c,b,a)(中間不動,兩邊交換了);
同理可證39次交換後,可由(a,b,c)->(b,a,c)(一邊不動,相鄰的交換);
因此,一開始可任意按需要進行交換使s1中的各數與s2中的各數相等,再進行調位置。
如果是兩個數就不一樣了,設要由(a1,a2)->(b1,b2),則a1必經偶數變為b1或經奇數步
變為b2;又由於26步之後a1,a2又會變回原狀態,故必在26步之內要解決變形,先設a1變形成功,再只須檢查a2有沒有變形成功即可。
#include #include #include using namespace std;
char a[100],b[100];
int main()
{ int cas,t=1,a1,a2,b1,b2;
scanf("%d",&cas);
while(cas--)
{int i,t=0;
scanf("%s%s",a,b);
int len=strlen(a);
if(len>2)
{for(i=0;i
hdu 5014 思維題 推理
從小數開始模擬找方法規律,然後推廣,尤其敢猜敢嘗試,錯了一種思路繼續猜 這是一種非常重要的方法啊 這道題還是從小數開始模擬,我是依據16以內的找的規律 依據2 k 2 k 1 2 k 1 2 k 2 這樣陪下去 當2 k n的時候,從2 k 1 按相同的方法配下去,wa了非常久,是lower bou...
HDU 5635 思維想法題
peter has a string s s1s2.sn,let suffi sisi 1.sn be the suffix start with i th character of s.peter knows the lcp longest common prefix of each two ad...
hdu4972 數學雜題
題意 有倆個隊進行n場比賽,每場只記錄下分差的絕對值 不知道哪一方 求最後可能比分。思考了半天,還分類討論。結果也想到只有 1 2 2 1的情況有倆種可能。哎還是跪,這題坑點交多,自己弱爆。官方正解 既然已經知道差值,那麼只有知道雙方最終得分之和就知道比分了!x y已知,當然要用x y去確定!問題轉...