SRM 510 DIV2 1000 TheLuckyBasesDivTwo
来源:互联网 发布:java开发mes系统 编辑:程序博客网 时间:2024/04/27 17:39
Task:
给你一个数N,把N在B进制中的转化存进一个数组S,若能满足
Solution:
首先判掉N==4||N==7,这样的话,一定有无数种Lucky数(只需B>N).
对于一个这么大的N,我们可以发现不能用枚举所有进制直接判,而显然可以看出进制的基数一定小于N,所以又少了一点(虽然根本没什么用),然后我们去看当转化完之后只有两位的话,那么第一位与第二位只可能是:(4,7),(4,4),(7,7),(7,4).
又有
下面就是位数大于三的时候了.我们有
那么就直接枚举i 从1到
但是这种方法的代码没有打……
看懂的就可以去敲了,没看懂的话……
那么就来看我的方法吧(开始耍无赖)……
我们先去枚举一个S数组,表示最终会有的转化后的结果.这个可以用
那么枚举出最后的数组之后,怎么去算是否成立呢?
二分是你的最佳选择.我们可以看出如果B越大,那么转换来的数一定也会越大.显然满足二分.这里还有个小Bug,就是说你在进制转化时可能会爆long long,这时只要判一下过程中有没有值溢出后小于0即可.
int S[25];LL ans,tp;LL Ex(LL Base,int x){//转换进制 LL re=0,B=1; for(int i=0;i<=x;i++){ re+=B*S[i]; if(re<0)return 1LL*INF*INF; B*=Base; if(S[i]>=Base)return -1; } return re;}void judge(int x){ LL L=1,R=1e12; while(L<=R){ LL mid=L+R>>1; LL sw=Ex(mid,x); if(sw>tp)R=mid-1; else if(sw<tp)L=mid+1; else if(sw==tp){ ans++; return; } }}void dfs(int x){//枚举最后转化的数组 if(x==17)return; S[x]=4;//加上一个 4 judge(x); dfs(x+1); S[x]=7;//加上一个 7 judge(x); dfs(x+1);}class TheLuckyBasesDivTwo {public: long long find(long long n) { bool f=true; ans=0;tp=n; if(n==4||n==7)return -1; dfs(0); return ans; }};
0 0
- SRM 510 DIV2 1000 TheLuckyBasesDivTwo
- SRM 510 D2L3:TheLuckyBasesDivTwo,brute force,optimization
- SRM 397 DIV2 [1000]
- SRM 572 div2 1000
- SRM 649 div2 1000
- SRM 452 DIV2 Problems 1000
- TC SRM 557 DIV2 1000
- SRM 598 DIV2 1000 FoxAndFencingEasy
- SRM 606 DIV2 1000 EllysCandyGame
- Topcoder SRM 635 div2 1000
- Topcoder SRM 636 div2 1000
- SRM 682 Div2 1000 SubtreesCounting
- SRM 570 DIV2 1000 CentaurCompany
- SRM 586 DIV2 1000 StringWeightDiv2
- SRM 611 DIV2 1000 ElephantDrinkingEasy
- tc SRM 570 div2 1000 CentaurCompanyDiv2
- TopCoder SRM 634 Div2 Problem 1000 - SpecialStrings
- Topcoder SRM 640 Div2 1000(巧妙数学题)
- Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
- 字符类Character(参考java语言程序设计)
- Linux文件管理--通配符
- sql Join用法
- 如何设置UNIX/Linux中新创建目录或文件的默认权限
- SRM 510 DIV2 1000 TheLuckyBasesDivTwo
- Linux 下 SVN 创建操作流程(客户端mac osx)
- py3环境bytes转换unicode注意
- Day5:Meeting in Laboratory
- java设计模式——装饰者模式Decorator
- android 画图的几个方法
- 对于FILE,LINE,func这样的宏
- 本地连接虚拟机上面的redis
- Spark2.0异常:java.net.URISyntaxException: Relative path in absolute URI