dfs:水题-DFS-牛客+集合中的质数-(容斥+dfs)-牛客
时间:2020-08-08
本文章向大家介绍dfs:水题-DFS-牛客+集合中的质数-(容斥+dfs)-牛客,主要包括dfs:水题-DFS-牛客+集合中的质数-(容斥+dfs)-牛客使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1,斐波那契数,递推
2,皇后数打表
3,进制转换
#include<bits/stdc++.h> /*#include<iostream> #include<string> #include<cstdio> #include<algorithm> #include<cmath> #include<iomanip> #include<queue> #include<cstring>*/ using namespace std; const int maxn=100; const int mod=19260817; const int inf=0x3f3f3f3f; typedef long long ll; typedef pair<int,int> pii; const int N=5e5+10; ll x; int m; int ans[]={0,1,0,0,2,10,4,40,92,352,724,2680,14200,73712}; ll f[maxn]; void solve() { ll res=1e18; for(int i=2; i<=m; i++) { int cnt=0; while(m%i==0) { cnt++; m/=i; } if(cnt) { ll n=x,sum=0; while(n) { sum+=n/i; n/=i; } res=min(res,sum/cnt); } } cout<<res<<endl; } int main() { cin>>x>>m; f[1]=f[2]=1; for(int i=3; i<maxn; i++) f[i]=f[i-1]+f[i-2]; int flag=0; for(int i=1; i<maxn; i++) { if(x==f[i]) { flag=1; solve(); break; } } int z=x%min(13,m)+1; if(!flag) cout<<ans[z]<<endl;; system("pause"); return 0; }
集合里面有n个质数。
请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。
解:容斥,搜索一下
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; const int mod=19260817; const int inf=0x3f3f3f3f; typedef long long ll; typedef pair<int,int> pii; const int N=5e5+10; int n,m; ll a[30]; ll ans; void dfs(ll step,ll state,ll cnt) { if(step==n) { if(!cnt) return ; else{//容斥 if(cnt&1) ans+=m/state; else ans-=m/state; } return ; } dfs(step+1,state*a[step+1],cnt+1);//选 dfs(step+1,state,cnt);//不选 return ; } int main() { cin>>n>>m; for(int i=1; i<=n; i++) cin>>a[i]; dfs(0,1,0); cout<<ans<<endl; system("pause"); return 0; }
领:
#include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; const int mod=19260817; const int inf=0x3f3f3f3f; typedef long long ll; typedef pair<int,int> pii; const int N=5e5+10; int n,m; ll a[30]; ll ans; void dfs(int p, int f, ll cur) {//递归枚举除数 if (p == n) return;//如果递归到头了 if (cur * a[p] <= m) {//如果还可以继续下去 ans += m / (a[p] * cur) * f; dfs(p + 1, -f, cur * a[p]); dfs(p + 1, f, cur); } } int main() { cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; sort(a, a + n);//排序,优先选择小的 dfs(0, 1, 1); cout << ans << endl; return 0; }
原文地址:https://www.cnblogs.com/sweetlittlebaby/p/13460634.html
- 你不知道的Javascript:有趣的setTimeout
- ADO.NET 2.0 中的新增 DataSet 功能
- WinRar 4.20 – 文件扩展名欺骗(0Day)
- 黑掉ATM取款机?只需一条短信
- DNS迭代穷举脚本
- 走进计算机取证分析的神秘世界
- SYNPROXY:最廉价的抗DoS攻击方案
- 如何使用AndroidStudio将开源项目library发布到jcenter
- Android Studio 使用Gradle多渠道打包
- 某些浏览器中因cookie设置HttpOnly标志引起的安全问题
- 偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder
- 科普哈希长度扩展攻击(Hash Length Extension Attacks)
- 分析 WordPress 3.8.2 修復的cookie偽造漏洞
- 技术宅打造全能美剧播放器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 存储过程
- 为什么别人不想回答你提的问题?
- python面试题搜集:史上最全python面试题详解(一)
- 一日一技:在 Golang 中如何快速判断字符串是否在一个数组中
- 面试问题之操作系统
- 软技能提升:转转中后台规范落地实践
- python面试题搜集(三)
- 什么是计算机网络?为什么需要网络通信?如何进行网络编程?
- Python中好用又高效的Collections 模块
- 正确创建Python二维数组
- 深入理解Python内存管理与垃圾回收,再也不怕问了(一)
- 走进面向“对象”编程的理想国(一)——深入理解Python中的一切皆对象
- 深入理解Python内存管理与垃圾回收,再也不怕问了(二)
- 如何利用Python实现二分查找(迭代和递归)
- 详解排序算法(Python实现)