牛客练习赛13D
定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。
比如说,47、744、4都是幸运数字而5、17、467都不是。
现在想知道在1...n的第k小的排列(permutation,https://en.wikipedia.org/wiki/Permutation)中,有多少个幸运数字所在的位置的序号也是幸运数字。
解法:康拓展开模拟即可,,最多置换了13位(全排列超过了1e9,前面的直接枚举所有幸运数字)
- //#pragma comment(linker, "/stack:200000000")
- //#pragma GCC optimize("Ofast,no-stack-protector")
- //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
- //#pragma GCC optimize("unroll-loops")
- #include<bits/stdc++.h>
- #define fi first
- #define se second
- #define mp make_pair
- #define pb push_back
- #define pli pair<long long,int>
- #define pi acos(-1.0)
- #define ll long long
- #define mod (998244353)
- #define C 0.5772156649
- #define ls l,m,rt<<1
- #define rs m+1,r,rt<<1|1
- #define pil pair<int,ll>
- #define pii pair<int,int>
- #define ull unsigned long long
- #define base 1000000000000000000
- #define fio ios::sync_with_stdio(false);cin.tie(0)
- using namespace std;
- const double g=10.0,eps=1e-;
- const int N=+,maxn=+,inf=0x3f3f3f3f,INF=0x3f3f3f3f3f3f3f3f;
- ll f[N];
- void init()
- {
- f[]=f[]=;
- for(int i=;i<=;i++)
- {
- f[i]=f[i-]*i;
- // printf("%lld ",f[i]);
- }
- // puts("");
- }
- int cal(ll x,ll y)
- {
- while(x)
- {
- if(x%!=&&x%!=)return ;
- x/=;
- }
- while(y)
- {
- if(y%!=&&y%!=)return ;
- y/=;
- }
- return ;
- }
- int main()
- {
- init();
- // printf("%d\n",cal(4,4));
- ll n,k,ans=;
- scanf("%lld%lld",&n,&k);
- k--;
- vector<ll>v;
- for(ll i=max(1ll,n-+);i<=n;i++)v.pb(i);
- for(ll i=max(1ll,n-+);i<=n;i++)
- {
- // printf("%lld\n",f[n-i]);
- ll x=k/f[n-i];
- ll r=k%f[n-i];
- k=r;
- sort(v.begin(),v.end());
- // for(int j=0;j<v.size();j++)printf("%d ",v[j]);
- // printf("%d+++%d++++%d--%d\n",i,x,v[x],cal(i,v[x]));
- ans+=cal(i,v[x]);
- v.erase(v.begin()+x);
- }
- v.clear();
- for(int i=;i<=;i++)
- {
- for(int j=;j<(<<i);j++)
- {
- ll res=;
- for(int k=;k<i;k++)
- {
- if((j>>k)&)res=res*+;
- else res=res*+;
- }
- v.pb(res);
- }
- }
- // for(int i=0;i<v.size();i++)printf("%lld\n",v[i]);
- sort(v.begin(),v.end());
- for(int i=;i<v.size();i++)
- if(v[i]<=max(0ll,n-))
- ans++;
- printf("%lld\n",ans);
- return ;
- }
- /********************
- ********************/
牛客练习赛13D的更多相关文章
- 牛客练习赛13D 幸运数字4
题目链接:https://ac.nowcoder.com/acm/contest/70/D 题目大意: 略 分析: 注意到12! < 10^9 < 13!,于是当n > 13时,第k ...
- 牛客练习赛13D:幸运数字Ⅳ(康托展开) F:关键字排序
链接:https://www.nowcoder.com/acm/contest/70/D 题目: 定义一个数字为幸运数字当且仅当它的所有数位都是4或者7. 比如说,47.744.4都是幸运数字而5.1 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
随机推荐
- java工程编写manifest文件
如果需要一个可以单独运行的jar包“Runnable JAR file”,省事的方法是妥妥的选择打一个可运行的jar包“Runnable JAR file”.如此一来,就可以把程序运行所依赖的类.第三 ...
- https://www.cnblogs.com/yuanchenqi/articles/6755717.html
知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一个场景:浏览器,网易云音 ...
- Java基础 - 可变字符串 StringBuffer
StringBuffer 类是线程安全的可变字符序列,一个类似于String类的字符串缓冲区,两者本质上是一样的,但StringBuffer类的执行效率要比String类快很多.String类创建的字 ...
- ArcGIS runtime sdk for wpf 授权
这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...
- 《CNI specification》翻译
Overview 本文提出了一个通用的基于插件的Linux容器网络解决方案,容器网络接口,CNI.它脱胎于旨在满足大多数rtk网络设计的rtk Networking Proposal. 首先,我们对如 ...
- 阿里巴巴 JAVA 开发手册
阿里巴巴 JAVA 开发手册 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开 一. 编程规约(一) 命名规约1. [强制]所有编程相关命名均不能以下划线或美元符号开始, ...
- Linux学习笔记—文件与文件系统的压缩与打包(转载)
压缩文件的用途与技术 例如,计算机都是以byte单位来计量的,1byte占8bit.如果存储数字1,那么1byte就会空出7bit.采用一定的计算方式,压缩这些空间可以大大降低文件存储. Linux系 ...
- Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹
课程内容 本文链接: 张丹博客 http://www.fens.me 用Maven构建Hadoop项目 http://blog.fens.me/hadoop-maven-eclipse/程序源代码下载 ...
- NHibernate MappingException. No Persister
在另一个Visual Studio项目(议会mm.k.Infrastructure)我有我的映射文件(一个映射目录),我的hibernate.cfg.xml和一些仓库. 这是我的映射文件: <? ...
- 5. Longest Palindromic Substring(最长回文子串 manacher 算法/ DP动态规划)
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...