cout << "hello, world";
if(n%2!=0)
return 0;
sum+=n;
{
}
num[j+1]=t;
num[j]=num[j+1];
t=num[j];
cnt++;
dfs(i,j); // 從此點開始DFS
{
}
{
}
if(visited[i][j]==0&&mp[i][j]=='@') // 目前座標沒被拜訪過 而且 有油
p++;
break;
break;
if(num[j]>num[j+1])
prime=false;
prime=false;
break;
break;
cout << "A";
cout << "B";
cout << "C";
cout << "D";
cout << "hello, "<< s << endl;
cout << "密碼錯誤" <<endl;
cout << "帳號錯誤" <<endl;
cout << "輸入錯誤!";
cout << i << " ";
cout << i << " ";
cout << i;
cout<<endl;
cout<<endl;
cout<<mp[i][j];
cout<<score[i][j]<<"\t";
cout<<visited[i][j];
for(int j=0;j<c;j++)
for(int j=0;j<c;j++)
if(i%j==0)
if(i%j==0)
if(score[i][6]<score[j][6])
isPrime[i]=0;
isPrime[i]=0;
lower=mid;
return dc(b,p/2,m)*dc(b,p/2,m)%m ; // p案计( b^(p/2)%m * b^(p/2)%m ) %m
return dc(b,p/2,m)*dc(b,p/2,m)*b%m; // p计璶ゑ案计Ωb
return sum;
sol=true;
sum*=i; // 每次迴圈 sum=sum*i
sum+=score[i][j];
t=rand()%49+1;
upper=mid;
{
}
for(int j=0;j<5-i;j++)
return;
s=(double)(a+b+c)/2;
visited[i][j]=cnt+1;
(n+1)/2=a;
a=(a*a+n)/(2*a);
a=b;
a=b;
b=r;
b=t;
bool prime=true;
bool prime=true;
cin>> r>>c;
cin>>money;
cin>>mp[i][j];
cin>>n;
cnt++;
cnt++;
cout << "*";
cout << "Hello" << endl;
cout << "Welcome";
cout << "不能構成三角形";
cout << "交換前:" << a << " " << b << endl;
cout << "交換後:" << a << " " << b << endl;
cout << "函式內:"<< a << " " << b << endl;
cout << "只能求完全平方數的平方根!";
cout << "輸入錯誤!";
cout << (9+6*a) <<endl;
cout << (9+6*a) <<endl;
cout << data[i] << " ";
cout << data[i] << " ";
cout << data[i] << " ";
cout << dc(b,p,m) << endl;
cout << endl;
cout << endl;
cout << endl;
cout << endl;
cout << i+1 <<"\t";
cout << num[i] << " ";
cout << sk.top(); // 印出堆疊頂端元素
cout <<(L/4)*((L-(L/4)*2)/2) << endl;
cout <<(n-1)<< endl;
cout<< n/12*50+n%12*5<< endl;
cout<<"請輸入第"<<i<<"個月的存款:";
cout<<(n%2==1? n-1:n)<<endl;
cout<<cnt;
cout<<endl;
cout<<endl;
do{
else
else
else
else
else
else if (n==1) // n==1時終止,回傳1
else if(mid*mid<n)
else if(score >=0)
else if(score >=60)
else if(score >=70)
else()
for (int j=2*i;j<n;j+=i)
for (int j=2;j<i;j++)
for (int j=2;j<sqrt(i);j++)
for (int j=i*i;j<n;j+=i)
for(int i=0;i<r;i++)
for(int i=0;i<r;i++)
for(int i=0;i<r;i++)
for(int i=0;i<r;i++)
for(int i=1;i<=n;i++) // 讓 i 從 1~n
for(int j=0;j<4;j++)
for(int j=0;j<7;j++)
for(int j=0;j<8;j++) // 5科,欄
for(int j=0;j<c;j++)
for(int j=0;j<c;j++)
for(int j=1;j<=(5+2*(n-1))/3;j++)
for(int j=1;j<=(5+2*(n-1))/3;j++)
for(int j=1;j<=2*i+1;j++)
for(int j=1;j<=2*i+3;j++)
for(int j=1;j<=2*i-1;j++)
for(int j=1;j<=n-i+1;j++)
for(int j=1;j<=n-i+2;j++)
for(int j=1;j<=n-i;j++)
i++;
if (i*i==n)
if (n == 0) // n==0時終止,回傳0。if後只有一行,可省略{}
if (p%2==0)
if(isPrime[i]==1)
if(isPrime[i]==1)
if(mid*mid>n)
if(n%2=1)
if(prime)
if(prime)
if(pwd!="222")
if(score >= 80)
if(usr!="111")
inorder(2*i+1);
inorder(2*i+2);
int a=1,b=2;
int n;
int p=1;
int sum=1;
int t;
mark[t]=1;
mid =(lower+upper)/2;
n/2=a;
n/=2; // 將n除以2
num[i]=t;
postorder(2*i+1);
postorder(2*i+2);
preorder(2*i+1);
preorder(2*i+2);
q.pop(); // 將最上面的牌丟掉
q.pop(); // 將次張牌丟掉
q.push(i); // 將牌的編號(1 2 3 …)依序push入佇列
q.push(q.front()); // 將次張牌重新放入佇列尾端
r=a%b;
return 0;
return 0;
return 0;
return 0;
return 0;
return 0;
return 0;
return 0;
return 1;
return 1;
return 1;
return 8;
return b%m;
return brick(n-1)+5;
return f(n-1)+n*(n+1)/2;
return f(n-1)+n*(n+1)/2;
return fib(n-1)+fib(n-2);//遞迴回傳
return;
return;
return;
score[i][5]=sum;
score[i][6]=sum/5;
score[i][7]=p;
sk.pop(); // 將堆疊頂端元素移除
sk.push(n%2); // 將n除以2的餘數push進堆疊
sum+=money;
sum=0;
swap(a,b);
t=a;
while()
{
}
}while(mark[t]==1);
條件1「成立」,且條件2「不成立」時的程式碼
條件1「成立」,且條件2「成立」時的程式碼
cout<< fixed << setprecision(3) <<(f-32)/1.8 << endl;
return 0;
cout << i;
dfs(i+1, j); // 下
dfs(i+1, j+1); // 右下
dfs(i+1, j-1); // 左下
dfs(i, j+1); // 右
dfs(i, j-1); // 左
dfs(i-1, j); // 上
dfs(i-1, j-1); // 左上。螢幕左上角為原點,往下、往右為正。 先看列(數學上的y),後看欄(數學上的x)
dfs(i-1,j+1); // 右上
for(int i=0;i<4;i++)
if (i*i==n)
if(i<0 || i>=r ||j<0 || j>=c || visited[i][j]!=0 ||mp[i][j]!='@') // i(列)、j(欄)超出邊界、此點已被拜訪過、此點沒油
long long int
long long int
return 0;
return 0;
sum*=i; // 每次迴圈 sum=sum*i
sum+=i; // 每次迴圈 sum=sum+i
}
向北公式為2L-1,向南為2L
### 常見的六種時間複雜度與演算法
### 循序搜尋 v.s. 二分搜尋
### 求質數演算法效能比較
### 運算能力
#include<iostream>
* **EX: int Main; 不等於 int main;**
* **EX: max()函數用來比較兩數較大者,如果想表示最大值可以宣告成 int maxx;**
....
....
a=n;
area=sqrt(s*(s-a)*(s-b)*(s-c));
area=sqrt(s*(s-a)*(s-b)*(s-c));
bool sol=false;
cin >> n;
cin >> pwd;
cin >> score;
cin >> usr;
cin>> a >> b >> c ;
cin>> a >> b >> c ;
const double PI=2*acos(0);
cout << endl;
cout << endl;
cout << endl;
cout << "三角形面積為" << area << endl;
cout << "三角形面積為" << area << endl;
cout << "座號\t國文\t英文\t數學\t自然\t社會\t總分\t平均\t名次\n";
cout << "請輸入n:" ;
cout << "請輸入n:";
cout << "請輸入n:";
cout << "請輸入密碼:";
cout << "請輸入帳號:";
cout << "請輸入成績:";
cout << brick(n) << endl;
cout << f(n); // 平面 4->10
cout << f(n); // 立體 4->20
cout << fib(n) << endl;
cout << g << endl;
cout << q.front(); // 印出剩下的那張牌
cout << sum;
cout << sum;
cout <<"存了"<<i-1<<"個月,總共" <<sum<< endl;
cout<< (m<=25? 25-m: 25-m+60)<< endl;
cout<<"請輸入三角形三邊長";
cout<<"請輸入三角形三邊長";
cout<<(2*h+2*w)<<endl;
cout<<(l<0? -l*2:l*2-1)<<endl;
cout<<(m-1+(n-1)*m)<<endl;
cout<<(v*t*2)<<endl;
do
do
double D,L,s,l;
double n,a;
double n,lower,upper,mid;
double s, area;
double s, area;
else
fill(isPrime,isPrime+n+1,1); // 全部先設為1(true),假設都是質數。需含入algorithm標頭檔
fill(isPrime,isPrime+n+1,1); // 全部先設為1(true),假設都是質數。需含入algorithm標頭檔
for (int i=1;i<=n;i++)
for (int i=2;i<=n;i++)
for (int i=2;i<=n;i++)
for (int i=2;i<=sqrt(n);i++)
for (int i=2;i<=sqrt(n);i++)
for(int i=0;i<4;i++)
for(int i=0;i<4;i++) // 4個人,列
for(int i=0;i<5;i++)
for(int i=0;i<6;i++)
for(int i=0;i<6;i++) // 陣列的索引值由0開始,所以i初值為0
for(int i=1;i<=10;i++)
for(int i=1;i<=n/2;i++)
for(int i=1;i<=n/2;i++)
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++) // 讓 i 從 1~n
for(int i=1;i<=n;i++) // 讓 i 從 1~n
g=gcd(a,b);
g=gcd(g,c);
g=gcd(g,d);
if (p==1) // pだ澄1氨ゎ
if(!sol)
if(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a)
if(i>=7)
if(i>=7)
if(i>=7)
if(n==1)
if(n==1)
if(score>100 || score<0)
if(usr=="111" && pwd=="222")
if(條件2)
inorder(0);
int a,b,c;
int a,b,c;
int a=400, b=200, c=150, d=625, g;
int b,p,m;
int cnt=0;
int cnt=0;
int d,l;
int f;
int h,w;
int i=1,money,sum=0;
int m,n;
int m;
int mark[50]={0}; // 標記陣列的初值=0。50個空間,陣列索引值為0~49
int n,sum=0; // sum 初值設為 1
int n,sum=1;
int n,sum=1; // sum 初值設為 1
int n;
int n=1000000000;
int n=1000000000;
int n=1000000;
int n=500000;
int num[6],t; // 宣告一個大小6的num陣列
int r;
int score;
int score[4][8] = {{12,13,15,10,12,0,0,0},{15,13,15,15,14,0,0,0},{14,14,12,15,13,0,0,0},{11,10,12,12,10,0,0,0}},sum=0;
int v,t;
isPrime[1]=false; // 1不為質數
isPrime[1]=false; // 1不為質數
lower = 1;
postorder(0);
preorder(0);
printf("%.3f\n",PI*s*l);
printf("經過了 %d 次運算,根號 %f 為 %.13f", cnt,n,a);
printf("經過了 %d 次運算,根號 %f 為 %.13f", cnt,n,mid);
queue<int> q; // 宣告一個int型別的queue,名為q,需含入 queue 標頭檔
return 0;
return a;
return 回傳值或運算式;
s=(double)(a+b+c)/2;
s=sqrt(L/2*L/2-D/2*D/2);
srand(time(NULL)); // 設定亂數種子。srand(time(NULL)); 需含入標頭檔 ctime
stack<int> sk; // 需含入 stack 標頭檔
string s ;
string usr,pwd;
t--;
upper = n-1;
void inorder(int i) // 前序,void表示沒有回傳值
void postorder(int i) // 前序,void表示沒有回傳值
while (!sk.empty()) // 堆疊內還有元素
while (n>0) // n大於0
while (q.size()>1) // 當佇列size>1時繼續執行
while(cin >> b >> p >> m)
while(cin >> s)
while(cin>> D>> L)
while(cin>> f)
while(cin>> m)
while(cin>>h>>w)
while(cin>>L)
while(cin>>l)
while(cin>>m>>n)
while(cin>>n)
while(cin>>n)
while(cin>>n)
while(cin>>v>>t)
while(sum<25000)
while(upper-lower>1e-13)
{ if(n==1)
{l=L/2;
}
}
} // 複合指定運算子 *=
} // 複合指定運算子 +=
}while((a*a-n>1e-13));
}while(r!=0);
周長減掉兩個寬剩兩個長
條件1「不成立」時程式碼
條件「不成立」時的程式碼
條件「成立」時的程式碼
程式碼
程式碼
int main()
{
}
- 接近正方型面積會最大




# 1.變數宣告
# 10.演算法
# 2.運算子
# 3.條件式
# 4.迴圈
# 5.陣列
# 6.函式
# 7.基礎演算法、資料結構
# 8.樹
# 9.圖
# include <iostream>
# include <iostream>
# include <iostream>
## EX-04:建立二元搜尋樹
## EX-09-1:求10萬內的質數。註解17、18行->1.411 sec
## EX-09-2
## EX-09-2:求100萬內的質數。註解17、18行->0.902 sec
## EX-10:ZeroJudge d219: 00374 - Big Mod
## EX-10:小算盤開根號(以牛頓法實作)
## EX-12_3:大樂透電腦選號(將數字排序顯示-Bubble Sort)
## EX-13:求學測總級分和平均。
## EX-14 求最大公因數
## EX-15 C取法
## EX-17:將排序時用到的兩數交換程式碼,寫成函式。
## EX-18:求費式數列第n項。
## EX-19
## EX-19_2
## EX-3二元樹 二元樹的走訪(Tree Traversal)(課本p4-7)
## EX-5:若一篇文章每個字母出現的次數為
## EX_02:ZeroJudge e183: 10940 - Throwing cards away II
## EX_07:畫出下圖的相鄰陣列,以Dijkstra演算法,求A到各點的最短路徑(以Excel表格表示)?
## EX_08:畫出下圖的最小生成樹,其權重總和為?28
## EX-01:10進位轉2進位(以STL stack實作)。11->1011
## 最小生成樹(minimum spanning tree)(課本p5-23)
### EX5-2 N!階層運算
### (1). Kruskal演算法為一個使用貪婪法 (greedy method) 的演算法,一開始為一空樹,每次在不讓圖中含有任何迴路(cycle)下尋找圖中最小權重的邊加入樹中,直到所有點皆在樹中即完成。
### 1.C++ 佇列(Queue)常用的方法
### 1.if 條件式語法
### 2.巢狀 if 語法
### a:8,b:7,c:3,d:4,e:5,建立Huffman Tree(次數小的字母結點放左邊),並求每個字母的Huffman Code。
### EX-06_2:ZeroJudge c129: 00572 - Oil Deposits。
### EX-07 while 存錢買手機。
### EX-08_2 小算盤開根號。
### EX-08_3:小算盤開根號(以二分搜尋法實作)
### EX-09-3 平方篩檢法 減少重複標記
### EX5
### EX5-1 等差為1的級數總和
### EX6-1 印出n列的直角三角形
### EX6-2 印出金字塔形狀
### EX6-3 3層聖誕樹。
### EX8 簡單求開根號
### EX_01 d483 hello, world
### EX_02 a001 哈囉
### EX_02:承EX_01,先判斷三邊長是否可以構成三角形。如果可以,求三角形面積;如果不行,輸出錯誤。
### EX_03 d827 買鉛筆
### EX_03:驗證登入帳號、密碼
### EX_04 d060 還要等多久啊?
### EX_04:驗證登入帳號、密碼
### EX_05 d051 糟糕,我發燒了
### EX_06 b004 繩子上吃草的牛
### EX_07:輸入三角形三邊長,以海龍公式(1)、(2)求三角形面積。
### ZeroJudge b112: 5. 高中運動會。
### 以遞迴函式計算 n 層香檳塔,總共有幾個杯子。
### 作業
### 圖形是「頂點」(vertex)和邊(edge)所組成
### 埃拉托斯特尼篩法(課本p3-5),求1000萬以內的質數。註解15行->0.155 sec
### 寫一函式可以計算n!,並以之求 C(n,k)=n!/((n−k)!∗k!)
### 對相當大的b、p、m,請寫一個有效率的演算法來計算 r = b^p mod m ( 1 <= b、p、m <= 32767 )
### 最短路徑(一個頂點到多頂點Dijkstra)(課本p6-20)
### 模擬具有樹枝狀性質的資料,由節點與邊組成,例如家族族譜、電腦資料夾結構。
### 自定函式宣告語法
### 計算 n 層「三角錐形」香檳塔,總共有幾個杯子。
#### (1) 先乘除後加減
#### (2) 整數除法、浮點數除法:5/2、5.0/2
#### (2). Prim演算法與Dijkstra演算法類似,屢次找出不在樹上,離樹最近的點。
#### (3) 資料型態轉換: a=4, b=5, c=6, s=7.5
#### (A*B)%C=(A%C)*(B%C)→(BP)%M=(BP/2%M)*(BP/2%M)
#### 1.科學記號表示法
#### 2.printf
#### EX int num[6]
#### EX: for(i=1;i<=10;i++)
#### EX:A=A+B 可以寫成 A+=B
#### Tip: printf .n控制小數點位數
#### Tip:先輸出s看看是否正確。
#### Tip:要加while() 進行重覆運算
#### Tip:每邊長要大於0,且任兩邊之和要大於第三邊。
#### `=`表示回傳數值 `==`表示運算數值
#### `第一個是if 第二個以後都是elseif 最後一個是else`
#### 初值是1,條件判斷是<=10就會繼續做,每進去執行一次迴圈就會加1
#### 利用函式能夠縮短運算時間 函式本身可以自己呼叫自己的資料
#### 利用多個if條件式二分法判斷多個條件
#### 可以用來做簡單的是非條件判斷
#### 將資料讀進記憶體 並可以形成不同維度的表格讀取地址
#### 把即將要使用的記憶體空間命名
#### 會從!=1開始不斷加一,做到!=11
#### 有時候改變宣告方式可以得到更準確的答案或是不同的想法
#### 符號可以簡寫
#### 邏輯
#### 重複執行一個指令 用數字當作計數器
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <stack>
( 第1層1個、2->3、3->6、4->10、5->15、第n層->?個杯子 )
(1) 插入排序法(Insertion Sort)、選擇排序(Selection Sort)
(2) Sorting Algorithms Animations
(Bonus):多加一個欄位求名次。
* ## 時間複雜度
* ## 演算法效能
* **endl 代表 end line,結束一行(換行)**
* **使用Tab鍵 程式碼可以縮排 Enter鍵 可以換行**
* **句子的結尾要有 分號 ;代表一件事結束**
* **如果條件式內只有一行程式碼,大括號{}可以省略**
* **將程式碼放入{ }中,就會由上到下執行,一旦執行到return 0 ;,程式就會立刻結束**
* **有些特定單字不能使用,因為已經被系統設為常用函數**
* **當程式無法執行時,可以設定端點在條件式或是迴圈之前進行Debug除錯**
* **盡量不要在程式碼中使用中文字,容易出現錯誤**
* **英文大小寫視為不同的文字**
- 2h+2w(*不能省略),(h+w)*2
- 3x4巧克力需要11刀
- 3元運算子
- 3元運算子、%
- for(變數初值;條件判斷;改變量)
- long long int
- m-1+m*(n-1) (why?)
- PA^2^ + PC^2^ = PB^2^ + PD^2^ (畢氏定理)
- v-t 圖算面積
- 場數差低於1場 所以要打至多
- 扣掉重覆的白色屋瓦。
---
---
1. ### a861 1.Secure the Perimeter
10. ### d549 矩形中的几何
2. ### d226 10071 - Back to High School Physics
2017的世界紀錄總共杯子數量為50116,疊了幾層?66(二分搜循法)
3. ### d053 Big Chocolate
4. ### d277 矩陣對角線
5. ### b681 1. 山洞探險
6. ### d127 二、牧場面積
7. ### d461 班際籃球賽
8. ### d096 00913 - Joana and the Odd Numbers
9. ### c776 106北二1.六邊形屋瓦
:mega:
:mega: 其它排序演算法
===
a->01 或 11
b->
b=17、p=1765、m=3 → r=2
b=2、p=10、m=10 → r=4
b=2、p=8、m=10 → r=6
bool isPrime[1000000001]; // 區域變數只能到200萬左右,改為全域變數。
bool isPrime[1000000001]; // 區域變數只能到200萬左右,改為全域變數。
breaks: false
c->
char mp[100][100];
cin >> t;
cin>>a>>b;
cin>>n>>k;
cout << f(n)/(f(n-k)*f(k)) << endl;
cout << x <<endl;
cout<<"Case "<<f<<':'<<' '<<sum<<endl;
d->
e->
else
else
for(int i=0;i<T;i++)
for(int n=a;n<=b ;n++)
Hint:類似bubble sort的寫法。若此位同學的總分<p位同學,名次為p+1。
if(條件)
if(條件)
if~else 語法:
int brick(int n)//自己呼叫自己的數值 但要有初值
int cnt=0;
int data[7]={0,1,2,3,4,5,6}; // 全域變數
int dc(int b,int p,int m)
int f(int n)
int f(int n)
int f(int n)
int fib(int n)
int gcd(int a,int b)
int m,n,x ;
int main()
int n,k;
int n;
int r,c;//全域變數
int T,a,b,sum,f=0;
int visited[100][100]={0};
long long int a,n;
long long int L;
PA、PB、PC變數形態用long long int或double
printf小數點,需 #include <cstdio>
return 0;
return 0;
robots: noindex, nofollow
sqrt(),需 #include <cmath>
tags: 資訊
title : 資訊概論
using namespace std;
void dfs(int i,int j)
void preorder(int i) // 前序,void表示沒有回傳值
void swap(int &a,int &b)//將數值作連結
while (cin >> n>> m)
while(cin>>T)
while(t--)
while(t>0)
x= n*m*3+n*2+m*1;
```c++
```C++ if(條件1)
{
{f++;sum=0;
| ---- |:------:|
| -------- | ---- |---|
| -------- | -------- |
| ------------- | --------------------------- |
| sk.empty() | 判斷堆疊是否為空 |
| sk.pop() | 刪除堆疊頂端元素 |
| sk.push(x) | 從堆疊「頂端」加入一個元素x |
| sk.size() | 堆疊元素數量 |
| sk.top() | 取得堆疊頂端元素
| stack<int> sk | 建立一個int型別的stack |
| `bool` | 布林(是非判斷) ||
| `char` | 字元(半形字)||
| `double` | 浮點數(小數點後兩位) ||
| `float` | 浮點數(小數點後一位) |-2|
| `int` | 整數 |-2147483648~2147483647|
| `string` | 字串(句子)||
| 乘法 | `*` |
| 加法 | `+` |
| 名稱 | 意義 |
| 型態 | 中文 |數值範圍|
| 減法 | `-` |
| 負數 | `-` |
| 運算 | 運算子 |
| 運算 | 運算子 |
| 遞增 | `++` |
| 遞減 | `--` |
| 除法 | `/` |
| 餘數 | `%` |
|AND | `&&` |
|NOT | `!` |
|OR | `||` |
|XOR | `^` |
|不等於 | `!=` |
|大於 | `>` |
|大於或等於|`>=` |
|小於 | `<` |
|小於或等於|`<=` |
|相等 | `==` |
f(n)=? ,if n>1
中序走訪(inOrder):先走訪左子樹,然後樹根,最後右子樹。
以DFS找出@相鄰土地有@有幾塊。
以輾轉相除法求兩數的最大公因數(寫成函式),並用之來求4數的最大公因數。
依讀入順序 30, 15, 50, 35, 10, 25, 40, 20, 45 建立一個二元搜尋樹(binary search tree)。
分而治之(Divid and Conquer)
前序走訪(preOrder):先走訪樹根,然後左子樹,最後右子樹。
合併排序(Merge Sort)1、合併排序2
回傳值的型態 函式名稱(變數型態 參數1,變數型態 參數2,...)
因為成對出現的因數中,一個會≦√n,而另一個會≧√n。因此只要檢查≦√n中是否有n的因數即可。
基礎程式設計 C++
如果一個數是合數,它的最小質因數會小於等於它的平方根。
對角線奇數可共用對角線交叉的花盆,偶數不共用
後序走訪(postOrder):先走訪左子樹,然後右子樹,最後樹根。
或
找出此列最後3個數字與第(N+1)/2列的關係
有N個奇數為第(N+1)/2列
條件「成立」時的程式碼
求最後剩下的那張牌編號為?(7->6、10->4)
短除法找三數的最大公因數(數學方法)
給你一疊有1~n編號的牌(1在最上面,n在最下面),在牌數大於1的時候執行以下操作:「丟掉最上面的牌,並把現在最上面的的牌放到最下面。」
輾轉相除法
遞迴式 : f(n)=1 ,if n==1