题意
给定一个数n,问让这个数从n到1需要几步操作。有以下两种操作方式:
1、如果n > 1,n可以减1
2、除以一个能整除的数
题解
想一下就可以发现,除了1,2,3这三个数是特殊情况之外,其他的只有奇数和偶数,对于偶数,除以一个数,让它变为2,再减一,需要2步;对于奇数,先将它减一变成偶数,按偶数操作即可,需要3步
AC代码
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#include<string>
#include<cstdio>
#include<cstring>
#include<map>
#include<set>
using namespace std;
#define ll long long
const int N = 1e5 + 15;
void closeStd(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
int main()
{
closeStd();
int t; cin >> t;
while(t--){
int n; cin >> n;
if(n == 1)
cout << 0 << endl;
else if(n == 2)
cout << 1 << endl;
else if(n == 3)
cout << 2 << endl;
else if(n & 1)
cout << 3 << endl;
else
cout << 2 << endl;
}
return 0;
}