對有n個人圍成的乙個圓圈進行按報數規則全部取數出列

2021-07-28 19:02:57 字數 553 閱讀 4948

設有n個人圍成乙個圓圈,現從第s個人開始報數,數到第m的人出列,然後從出列的下乙個人重新開始報數,數到第m個人再出列,如此反覆,直到所有的人全部出列為止。對於任意給定的n,s,m,求按出列次序得到的n個人員的序列。

首先,建立乙個迴圈鍊錶,這裡預設頭指標中的data為1,即為n個人中的第乙個人

typedef int elemtype;

typedef struct node

linklist;

linklist * create()

tail->next=head;

return head;}出列演算法:

第一:找到第s個報數的人:

linklist * find(linklist *head,int s) }

return p;}

第二:找到第m個人出列,並將報數起點設為m的下乙個人:

int output(linklist *head,int m)

printf("\t%d",p->data);

return 0;}主函式:

int main()

給定乙個整數N,那麼N的階乘N!末尾有多少個0呢?

題目詳情 給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。題目分析 看到題第一想法是將n的階乘求出來然後取計算,但是再一想又會出現資料溢位的問題。所以就想到了另外一種辦法。因為 n!1 2 3 4 5 n 所以我們可以採用分解質因數來解決...

給定乙個整數N,那麼N的階乘N!末尾有多少個零呢?

題目 給定乙個整數n,那麼n的階乘n!末尾有多少個零呢?末尾有幾個零?如果我們從哪些數相乘可以的出10,這個角度來解決這個問題,這就會變成簡單。對質因數進行分解由於10 2 5,即每一對2和5就可以產生乙個10,如果我們求出n 中,2和5的分別的次方數,假設為x,z,取決於兩個數中最小的那個數,於是...

輸入乙個整數n,按要求生成乙個n n的蛇形矩陣

題目 輸入乙個整數n,要求輸出乙個n n蛇形陣 n 10 比如輸入整數4,則輸出如下蛇形陣 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7看到別人寫心裡癢癢,好久沒有寫過演算法題,找到一到比較經典的題目寫一寫。一般寫這些演算法題,都需要找規律,想一些特殊情況,甚至可以代...