首頁  >  文章  >  程式設計師如何解答難題,得到女神QQ號?

程式設計師如何解答難題,得到女神QQ號?

小云云
小云云原創
2017-11-07 11:50:252258瀏覽

遇到一位女神,想著憑自己的顏值可以捕捉芳心,於是便主動去找女神要QQ號,沒想到顏值攻略失敗,女神給我出了道題,看來真是程式設計師之間的一場較量啊,題目如下:
女神給了一串數字(不是QQ號碼),根據下面規則可以找出QQ號碼:先刪除第一個數,緊接著將第二個數放到這串數字的結尾,再將第三個數刪除,並將第四個數放到這串數字的末尾……如此循環,知道剩下最後一個數,將最後一個數也刪除,按照剛才刪除的順序,把這些數字連在一起就是女神的QQ號碼啦。

 程式設計師如何解答難題,得到女神QQ號?

就是這樣,女神給了一串數字631758924,現在要做的就是從這個數字中找出女神的QQ號碼了,方法有很多種,比如說用9張卡片分別寫上這9個數字,模擬題目的過程,可以算出來,也可以用筆一個一個的去算~~~~

這些方法都太low了,顯示不出程式設計師的能力,還是寫個程式比較酷一點(其實我是在想,要是下次再遇到一個女神出這樣的題目,程式就很方便了,哈哈~~~)

#解決方法

第一種方法,採用數學的方法,根據題目的規律,循環下面的操作:取整=>取餘=>取餘*10+取整。 。 。 。 。取餘取整的物件都是10的倍數,依位數而定,每次取整之後就是一位,循環直到數字等於0。

$raw_num = 631758924;  

$num = 0;  

#$devisor = 1;  

1 ($devisor

{  

    $devisor *= 10;     //取得最小的大於raw_num的10的倍數的整數

#''

 

while ($raw_num > 0) {  

    $devisor /= 10;  

    $next = floor($raw_num / $devisor);取得下一個數字 

    $num = $num*10 + $next;             //10 + $next;             //計算中對半成品中「QQ號碼 

o_#$" $ $last = floor($raw_num * 10 / $devisor);    //移動數字,拼接最新的QQ號碼 

 

    $pre = $raw_num % (ceil($devisor #    $pre = $raw_num % (ceil($devisor / 10) );  

 

    $raw_num = $pre * 10 + $last; $num}";    //恭喜你啦,成功取得QQ號碼:615947283

利用佇列的FIFO取得QQ號碼,根據題目的特性,剛好可以使用佇列來處理,佇列簡單方便,而且更好理解。

#include

struct queue {  

    int *data;  

    int head;  

 

};   

int main()  

#{  

    int num, i;  

    printf("請輸出要破解的QQ 號碼長度:");  

    scanf("%d", &num);  

 

    struct queue q;  

  int *)malloc(sizeof(int)*(num*2-1));  //總共需要的陣列長度為num*2-1   

    q.head = 0;  

# q.tail = 0;  

 

卷, &q.data[q.tail]);  

        q.tail++;  

  }  

 號碼:");   

    while(q.head

    {  

     );  

        q.head++;  

 

        q.data[q. tail++;  

        q.head++;  

    }  

#    return 0 一實驗 

請輸出要破解的QQ號碼長度:9  

#請輸出要破解的QQ號碼長度:9  

6  

3  

1  

7  

#5  

8  

9  

2  

4  

恭喜你啦,成功取得QQ號碼:615947283請按任何鍵繼續. . .

 

QQ號碼到手,還展現了一手好本領。這下我在女神心中地位是不是又有大大的提升。

怎麼樣,這種方法大家學到了嗎?

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn