【蓝桥杯备赛国赛】5-5

文章目录

求阶乘

求阶乘

分析k的范围,10的18次方。这个数字很大

想要末尾有0的存在必须要2和5,但是通过分析2的数目应该是远远多于5的,所以只要5的数目够多即可。所以for循环的层次也是10的九次方以上,必然会超时,想到了用二分法来解决。

如何计算N的阶乘包含多少个5呢?

java 复制代码
  public static   long solve(long n){
        // 25阶乘进来  6个       30 5 10 15 20 25(2) 30  七个5
        long  res=0;
        while (n>0){
            res+=n/5; //res+=n/5  如果是5的n次方倍数,需要考虑;
            n/=5;
        }
        return  res;
    }
java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        long n=scanner.nextLong();
        //用数组存起来
        long l=1,r=Long.MAX_VALUE;
        while (l<r){
            long mid=l+(r-l>>1);
            if (solve(mid)<n) l=mid+1;
            else r=mid;
        }
        //多少个零
        long result=solve(l);
        if (result==n) System.out.println(l);
        else System.out.println(-1);
    }
    public static   long solve(long n){
        // 25阶乘进来  6个       30 5 10 15 20 25(2) 30  七个5
        long  res=0;
        while (n>0){
            res+=n/5;
            n/=5;
        }
        return  res;
    }
}

双子数

线性筛实现。

cpp 复制代码
#include <bits/stdc++.h>
#define int __int128 //用__int128稳一点 
using namespace std;

long long ans=0;
const int n=10000010;
bool f[10000010]={1,1}; //标记
vector<int> v;
signed main(){
	for(int i=2;i<=n;i++)
	{
		if(f[i]!=1)  
		v.push_back(i);
		for(int j=0;j<v.size()&&v[j]*i<=n;j++)
		{
			f[v[j]*i]=1;
			if(i%v[j]==0)break;
		}
	}
for(int i=0;i<v.size();i++)
  for(int j=i+1;j<v.size();j++)
  {
  	 if(v[i]*v[i]*v[j]*v[j]<2333)continue;
     else  if(v[i]*v[i]*v[j]*v[j]>23333333333333)break;
  	 ans++;
  }
	

	cout<<ans<<endl; 
} 
相关推荐
All for pursuit.19 分钟前
【回溯-2】22.括号生成
数据结构·c++·算法·leetcode
longlongzihan37 分钟前
LeetCode 1004.最大连续1的个数III 滑动窗口及动态规划题解
c++·算法·leetcode·dp·滑动窗口
朝朝辞暮i44 分钟前
C++ 第 22 课:const —— 不允许随便修改的数据
开发语言·c++·算法
蒸蒸yyyyzwd1 小时前
力扣二分总结-lowerbound
c++
Chen—LSN1 小时前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
Chen_harmony1 小时前
六、排序详解
c语言·数据结构·算法·排序算法
ShineWinsu1 小时前
对于Redis:List类型的解析
数据库·c++·redis·链表·缓存·面试·list
-dzk-1 小时前
【贪心算法】LC 55.跳跃游戏
算法·游戏·贪心算法
ofoxcoding2 小时前
Jev 模型评测深度解析:核心得分、能力局限与最佳适用任务场景
人工智能·算法·机器学习·ai
Evand J2 小时前
【MATLAB例程】三维A*路径规划与TOA-AOA-TDOA融合定位算法。附下载链接
数据库·算法·matlab