当进制转换后所剩下的为数较少时(2位。3位),相应的base都比較大。能够用数学的方法计算出来。

预处理掉转换后位数为3位后,base就小于n的3次方了,能够暴力计算。

。。

Lucky Number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)

Total Submission(s): 521    Accepted Submission(s): 150

Problem Description
“Ladies and Gentlemen, It’s show time! ”



“A thief is a creative artist who takes his prey in style... But a detective is nothing more than a critic, who follows our footsteps...”



Love_Kid is crazy about Kaito Kid , he think 3(because 3 is the sum of 1 and 2), 4, 5, 6 are his lucky numbers and all others are not. 



Now he finds out a way that he can represent a number through decimal representation in another numeral system to get a number only contain 3, 4, 5, 6. 



For example, given a number 19, you can represent it as 34 with base 5, so we can call 5 is a lucky base for number 19. 



Now he will give you a long number n(1<=n<=1e12), please help him to find out how many lucky bases for that number. 



If there are infinite such base, just print out -1.
 
Input
There are multiply test cases.



The first line contains an integer T(T<=200), indicates the number of cases. 



For every test case, there is a number n indicates the number.
 
Output
For each test case, output “Case #k: ”first, k is the case number, from 1 to T , then, output a line with one integer, the answer to the query.
 
Sample Input
2
10
19
 
Sample Output
Case #1: 0
Case #2: 1
Hint
10 shown in hexadecimal number system is another letter different from ‘0’-‘9’, we can represent it as ‘A’, and you can extend to other cases.
 
Author
UESTC
 
Source
 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <cmath> using namespace std; typedef long long int LL; LL n;
set<LL> ans;
bool change(LL x,LL base)
{
bool flag=true;
while(x)
{
LL temp=x%base;
x/=base;
if(temp>=3LL&&temp<=6LL) continue;
else
{
flag=false;
break;
}
}
return flag;
} int main()
{
int T_T,cas=1;
scanf("%d",&T_T);
while(T_T--)
{
ans.clear();
cin>>n;
if(n>=3LL&&n<=6LL)
{
cout<<"Case #"<<cas++<<": -1"<<endl; continue;
} for(LL a=3;a<=6;a++)
{
for(LL b=3;b<=6;b++)
{
LL limit=max(a,b);
if( (n-b)%a == 0 )
{
if( (n-b)/a > limit)
{
ans.insert((n-b)/a);
}
}
}
} for(LL a=3;a<=6;a++)
{
for(LL b=3;b<=6;b++)
{
for(LL c=3;c<=6;c++)
{
LL C=c-n;
if(b*b >= 4LL*a*C )
{
LL deta=sqrt(b*b-4LL*a*C);
LL base1=(-b+deta)/(2*a);
LL base2=(-b-deta)/(2*a);
LL limit=max(a,max(b,c));
if(a*base1*base1+b*base1+c==n && base1>limit)
{
ans.insert(base1);
}
if(a*base2*base2+b*base2+c==n && base2>limit)
{
ans.insert(base2);
}
}
}
}
} for(LL i=4;i*i*i<=n;i++)
{
if(change(n,i))
{
ans.insert(i);
}
}
cout<<"Case #"<<cas++<<": "<<ans.size()<<endl;
}
return 0;
}

HDOJ 4937 Lucky Number的更多相关文章

  1. 枚举 + 进制转换 --- hdu 4937 Lucky Number

    Lucky Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  2. HDU 4937 Lucky Number(2014 Multi-University Training Contest 7)

    思路:先枚举  a*bas +b = n  求出 bas 在sqrt(n)到n的  (bas>a&&bas>b) 再枚举  a*bas*bas+b*bas+c =n  求出 ...

  3. HDU 4937 Lucky Number (数学,进制转换)

    题目 参考自博客:http://blog.csdn.net/a601025382s/article/details/38517783 //string &replace(iterator fi ...

  4. 2014多校第七场1003 || HDU 4937 Lucky Number

    题目链接 题意 : 给定一个十进制n,让你转化成某个进制的数,让这个数只包含3 4 5 6这些数字,这个进制就成为n的幸运数字,输出有多少幸运数字,例如19,5进制表示是34,所以5是19的一个幸运数 ...

  5. hdu 4937 Lucky Number

    虽然算法清晰的不能再清晰,但是实现总是边角料错这错那. 题目大意: 给出n,找出一些进制,使得n在该进制下仅为3,4,5,6表示 解题思路: 首先,4-10000进制直接枚举计算出每一位 此外,最多只 ...

  6. HDU 4937 Lucky Number 规律题_(:зゝ∠)_

    把全部合法的进制打出来会发现合法的进制都是在 n/3 n/4 n/5的边上 然后暴力边上的进制数.. #include <cstdio> #include <set> type ...

  7. HDU 4937 Lucky Number 搜索

    题意: 给你一个数,求在多少种不同的进制下这个数每一位都是3.4.5.6中的一个. 思路: 搜索.枚举这个数在任意进制下的表示,判断是否合法.当数字只有3.4.5.6时,必定有无穷种. 因为数字太大, ...

  8. 水题 HDOJ 4727 The Number Off of FFF

    题目传送门 /* 水题:判断前后的差值是否为1,b[i]记录差值,若没有找到,则是第一个出错 */ #include <cstdio> #include <iostream> ...

  9. SCU3502 The Almost Lucky Number

    Description A lucky number is a number whose decimal representation contains only the digits \(4\) a ...

随机推荐

  1. DELL RACADM 工具使用介绍

    如果iDRAC的IP或者设置出现问题,不能够链接,那么可以通过RACADM这个程序在系统层面可以对iDRAC进行设置,使用的方法以及命令都在下边. RACADM provides command li ...

  2. IO-File 文件 目录 基本操作 递归 遍历

    创建和删除 //创建文件 File file1 = new File("不存在的文件.txt");//注意,这一步并没有创建文件,只是把磁盘中的文件封装成了一个对象 System. ...

  3. NUnit单元测试初试

    创建项目,创建几个方法 创建测试类 开启NUnit测试工具,新建一个测试项目 打开测试的程序集 选择节点,点击测试,绿色通过,红色说明有错误

  4. OD: Writing Small Shellcode

    第 5.6 节讲述如何精简 shellcode,并实现一个用于端口绑定的 shellcode.原书中本节内容来自于 NGS 公司的安全专家 Dafydd Stuttard 的文章 “Writing S ...

  5. Sass函数--字符串函数

    Sass的函数简介在 Sass 中除了可以定义变量,具有 @extend.%placeholder 和 mixins 等特性之外,还自备了一系列的函数功能.其主要包括: ● 字符串函数 ● 数字函数 ...

  6. Flexbox属性查询列表

    1.任何一个flexbox布局的第一步是需要创建一个flex容器.为此给元素设置display属性的值为flex.在Safari浏览器中,你依然需要添加前缀-webkit. .flexcontaine ...

  7. (转)VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“

    中调试项目遇到错误提示,Visual Studio 2010(或VS2008或VS2005)启动调试的时候,弹出提示信息: 生成下面的模块时,启用了优化或没有调试信息: C:\WINDOWS\Micr ...

  8. 监听键盘 防止输入时覆盖掉textfiled

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardwasChange:) name:U ...

  9. iOS 中实现随机颜色

    开发中为了测试能够快速看到效果很多时候我们对颜色采用随机颜色 代码块如下 UIColor * randomColor= [UIColor colorWithRed:((float)arc4random ...

  10. Emoji表情在网页中显示

    最近遇到一个项目,客户手机上发送的表情要在电脑网页中显示,没有找到简便方法,于是有了以下方案. 由于Emoji表情传到后台是“口”,怎么找出接收数据中的表情是关键,各种搜索后,我用下面的正则表达式匹配 ...