蓝桥杯 货物摆放 (三个数的乘积 1e16 dfs)

news/2024/7/20 22:14:13 标签: 蓝桥杯, 深度优先, 职场和发展

题目链接:

https://www.lanqiao.cn/problems/1463/learning/?subject_code=1&group_code=4&match_num=12&match_flow=1&origin=cup

思想:两个循环 1e5*1e5  虽然会超时 但是是填空题 

正解是dfs ,先找出 n 的因子。

暴力代码:

#include<bits/stdc++.h>
using namespace std;

//#define int long long
typedef long long ll;
typedef pair<int,int> pii;

const int N = 5e2+5;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
    
    //ll n=202041820210418;
    ll n=2021041820210418;
    ll ans=0;
    for(ll i=1;i*i*i<=n;i++){
    	if(n%i==0){
    		ll s=n/i;
    		for(ll j=i;i*j*j<=n;j++){
	    		if(s%j==0){
	    			ll k=n/i/j;
	    			if(i==j&&j==k){
	    				ans+=1;
	    			}
	    			else if((i==j&&j!=k)||(i==k&&j!=i)||(j==k&&i!=j)){
	    				ans+=3;
	    			}
	    			else if(i!=j&&j!=k&&i!=k){
	    				ans+=6;
	    			}
	    		}
	    	}
    	}
    	
    }
    cout<<ans<<"\n";
    
    
	
	return 0;	

}


dfs代码:

#include<bits/stdc++.h>
using namespace std;

//#define int long long
typedef long long ll;
typedef pair<int,int> pii;

const int N = 5e2+5;

ll n,ans;
ll arr[5];
ll d[N],x=0;

void dfs(int step){
    if(step>=3){
        if(arr[0]*arr[1]*arr[2]==n){
            ans++;
        }
        return;
    }
    for(int i=0;i<x;i++){
        arr[step]=d[i];
        dfs(step+1);
    }
    return;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
    
    //ll n=202041820210418;
    n=2021041820210418;
    for(ll i=1;i*i<=n;i++){
    	if(n%i==0){
    		if(n/i!=i){
    			d[x++]=i;
    			d[x++]=n/i;
    		}
    		else d[x++]=i;
    	}
    }
    dfs(0);
    cout<<ans<<"\n";
    
    
	
	return 0;	

}


 


http://www.niftyadmin.cn/n/5408107.html

相关文章

【会议征稿通知】第二届数字化经济与管理科学国际学术会议(CDEMS 2024)

第二届数字化经济与管理科学国际学术会议&#xff08;CDEMS 2024&#xff09; 2024 2nd International Conference on Digital Economy and Management Science&#xff08;CDEMS 2024&#xff09; 2024年第二届数字经济与管理科学国际会议(CDEMS 2024) 定于2023年4月26-28日…

51单片机 串口

一、串口基本认知概念 串口是一种用于在计算机或其他设备之间进行数据传输的通信接口。串口传输是通过发送和接收数据位来进行的&#xff0c;通常是一个字节一个字节地传输。串口通常有多种参数设置&#xff0c;比如波特率、数据位、校验位和停止位等&#xff0c;这些参数需要…

如何使用生成式人工智能探索视频博客的魅力?

视频博客&#xff0c;尤其是关于旅游的视频博客&#xff0c;为观众提供了一种全新的探索世界的方式。通过图像和声音的结合&#xff0c;观众可以身临其境地体验到旅行的乐趣和发现的喜悦。而对于内容创作者来说&#xff0c;旅游视频博客不仅能分享他们的旅行故事&#xff0c;还…

DFS之剪枝与优化

剪枝 1.优化搜索顺序&#xff1a;在大部分情况下&#xff0c;我们应该优先搜索分支较少的结点 2.排除等效冗余&#xff08;在不考虑顺序的情况下&#xff0c;尽量用组合的方式来搜索&#xff09; 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索 165. 小猫爬山 - AcWing题库 import …

2024前端应试宝典,高频涵盖面试细节

前言 前端面试一直是前端人最麻烦的经历&#xff0c;因为面试需要&#xff08;简历、学历、技术点、框架掌握、面试八股、未来规划、应试技巧、简历细节等&#xff09;&#xff0c;对于小厂相对简单一些&#xff0c;但是对于大厂来说&#xff0c;一次面试往往需要精心准备很长…

MySQL之连接查询(Join)

在 MySQL 中&#xff0c;连接查询&#xff08;Join&#xff09;是在关系型数据库中使用的一种非常重要的查询技术&#xff0c;用于从多个表中检索相关信息并进行组合。在 MySQL 中&#xff0c;常见的连接查询包括内连接&#xff08;INNER JOIN&#xff09;、左连接&#xff08;…

排序算法(1):直接插入排序

原文链接&#xff08;原文也是我写的哈&#xff0c;强烈推荐去原文链接看&#xff09;&#xff1a;直接插入排序 - Fucking Code 直接插入排序&#xff08;Straight Insertion Sort&#xff09;是一种最简单的排序方法&#xff0c;其基本操作是将一条记录插入到已排好的有序表中…

easyExcel多sheet导入表格

PostMapping("/importExcelOther")ApiOperationSupport(order 9)ApiOperation(value "导入excel数据", notes "传入excel文件")public R importExcelOther(RequestParam("file") MultipartFile file) {if (file.getSize()0){throw …