文章目录
丑数
定义
- 丑数:只包含质因数
2
、3
或5
的正整数- 从小到大的丑数:1,2,3,4,5,6,8,9,10,12,15,…
输入格式
一个整数 n
。
输出格式
一个整数。
样例
输入输出样例1
输入 10
输出 12
输入输出样例2
输入 1
输出 1
解释
1
通常视为丑数。
说明提示:
1 <= n <= 500000
AC代码
#include<bits/stdc++.h> #define LL long long int using namespace std; int main(){ int n; cin >> n; if(n<7){ cout << n << endl; return 0; } vector<LL> fn(n); fn[0]=1; int t2=0,t3=0,t5=0; for(int i=1;i<n;i++) { LL tmp=min(fn[t2]*2,min(fn[t3]*3,fn[t5]*5)); fn[i]=tmp; if(tmp==fn[t2]*2) t2++; if(tmp==fn[t3]*3) t3++; if(tmp==fn[t5]*5) t5++; } cout << fn[n-1] << endl; return 0; }
素数
定义
一个数的因数只有1和其本身的数
求解
1.从2~n-1,遍历,若有整除的情况,便不是素数
2.缩小范围,将上限变为
3.埃氏筛求素数,一个素数的2倍、3倍等都一定不是素数
代码
int sushu(int n) { if(n <= 1) return 0; if(n <= 3) return 1; if(n % 2 == 0 || n % 3 == 0) return 0; for(int i=5;i<=sqrt(n);i+=6) { if(n % i == 0 || n % (i+2) == 0) return 0; } return 1; }
斐波那契数列
定义
规定F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=3)
求解
根据通项公式
代码
long fibo(int n) { if(n<=1) return n; return (long)((pow((1+sqrt(5))/2,n)-pow((1-sqrt(5))/2,n))/sqrt(5)); }