hdu 4937 Lucky Number
来源:互联网 发布:人工智能属于什么专业 编辑:程序博客网 时间:2024/05/16 01:20
题意:
用任意进制base去表示十进制数n,若base进制表示的数的每一位都是3,4,5,6中的其中一个数,则该进制base 是幸运base
给你一个n,求base的数目,若base 为无穷,输出-1
其中1<= n <= 1e12
方法:
若n用base进制表示: 若base进制只有一位, 明显可以得出n= 3 || n= 4 || n==5|| n==6 ,且该情况下 ans为无穷,因为当base>= 7都是符合条件的
若base进制下有两位, 可以得出 a*base+ b= n , a,b= 3,4,5,6
同理: 当base进制下为3位时,a*base*base + b*base +c= n,a,b,c= 3,4,5,6
当base进制大于3位时, 因为n最大为1e12, 所以base最大为10000,最小为4, 暴力枚举即可
自己的问题:
在比赛的时候,我就想到两位数的时候,进制最大可以为n/3, 然后就觉得枚举进制不可行的。。。 然后就一直在想枚举位数。。。 都没想三位数和四位数的进制情况
代码:
#include <stdio.h>#include <string.h>#include <math.h>#define LL __int64int hash[10005];int main(){int T;scanf("%d",&T);for(int C= 1; C<= T; C++){memset(hash, 0, sizeof(hash));LL n;scanf("%I64d",&n);if(n==3 || n== 4 || n== 5 || n==6){printf("Case #%d: -1\n",C);continue;}LL ans= 0;LL base;for(int a= 3; a<= 6; a++)for(int b= 3; b<= 6; b++){LL m= n- b;if(m%a== 0){base= m/ a;if(base> a && base > b){ans++;if(base<= 10000)hash[base]++;}}}for(int a= 3; a<= 6; a++)for(int b= 3; b<= 6; b++)for(int d= 3; d<= 6; d++){LL c= d- n;LL xx= b*b- 4*a*c;if(xx< 0)continue;double x1= (-b + sqrt(1.0*xx))/(2*a);LL x2= x1;LL x3= x2+1;if(a*x2*x2+ b*x2+ c== 0 && x2> a && x2> b && x2> d){if(x2<= 10000)hash[x2]++;ans++;}if(a*x3*x3+ b*x3+ c== 0 && x3> a && x3> b && x3> d){if(x3<= 10000)hash[x3]++;ans++;}}for(int base= 4; base<= 10000; base++){LL m= n;int flag= 1;while(m){LL num= m%base;if(num!= 3 && num!=4 && num!= 5 && num!= 6){flag= 0;break;}m/= base;}if(flag&& !hash[base])if(flag){ans++;hash[base]++;}}printf("Case #%d: %I64d\n",C, ans);}return 0;}
0 0
- HDU 4937 Lucky Number
- HDU 4937 Lucky Number
- hdu 4937 Lucky Number
- HDU-4937-Lucky Number
- HDU - 4937 Lucky Number
- hdu 4937 Lucky Number
- HDU 4937 Lucky Number
- HDU 4937 Lucky Number
- HDU 4937Lucky Number
- hdu 4937 Lucky Number(数论)
- hdu 4937 Lucky Number 数学
- HDU 4937 Lucky Number(数论)
- HDU 4937 Lucky Number 【搜索】
- hdu 4937 Lucky Number 2014多校七 数论
- hdu 4937 Lucky Number 科学暴力
- HDU 4937 Lucky Number(枚举进制)
- hdu 3346 Lucky Number
- hdu 3346 Lucky Number
- android屏蔽系统返回键
- 2014华为机试题11:截取数字
- Same Tree LeetCode
- oracle中去掉文本中的换行符、回车符、制表符小结
- IOS UIAlertView 上添加View
- hdu 4937 Lucky Number
- [toj4087]m个不同的箱子放n种不同的球
- 2014 多校07 1001 Prime Tree
- oracle学习 复杂查询
- Reverse Number hdoj 1266
- 猫儿PDF-Word格式转换经验谈
- Linux相关命令使用安装下载删除
- symfony初学者必须掌握的知识
- 变成多维阵列