Codeforces Round #685 (Div. 2) Problem - A. Subtract or Divide 題解
阿新 • • 發佈:2020-11-22
題目
題目連結
Codeforces Round #685 (Div. 2) Problem - A. Subtract or Divide
題目大意
給你一個整數n,你可以進行以下操作:
- 將n除以一個能整除的數。
- 將n減去1(如果n大於1)
求數量最小的運算元使得n變成1。
輸入
第一行包含測試情況數量t(1<=t<=1000)。
每個測試情況只包含一個整數n(1<=n<=1e9)。
輸出
對於每個輸出情況,輸出使得n變為1的最小運算元量。
樣例輸入
6
1
2
3
4
6
9
樣例輸出
0
1
2
2
2
3
題解
- 如果n=1,結果為0
- 如果n=2,2->1,結果為1
- 如果n=3,3->2->1,結果為2
- 如果n>3且n為偶數,n->2->1,結果為2
- 如果n>3且n為奇數,n->n-1->2->1,結果為3
Then show the code.
// A. Subtract or Divide #include <stdio.h> long long n; int main(){ int t, cnt; scanf("%d", &t); while(t--){ scanf("%I64d", &n); cnt = 0; if(n==2) cnt = 1; else if(n == 3) cnt = 2; else if(n%2 == 0 && n>3) cnt = 2; else if(n%2 && n>3) cnt = 3; printf("%d\n", cnt); } }