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 求出bas 在 n^(1/3) 到sqrt(n)的 (bas >a&&bas>b&&bas>c)
上面 a b c 均只有 3 4 5 6 四种取值。
剩下的 直接 n^(1/3) 枚举 效率为 n的三分之一 次方。
//============================================================================
// Name : 1003.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================ #include <iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<cstdio>
#define LL long long
#define MAXN 1000050
using namespace std;
LL ans[MAXN];
int f[]={,,,};
int main() {
int tt,ri=;
LL n;
scanf("%d",&tt);
while(tt--)
{
int tail=;
scanf("%I64d",&n);
if(n>=&&n<=)
{ printf("Case #%d: -1\n",++ri);
continue;
}
if(n<)
{ printf("Case #%d: %d\n",++ri,tail);
continue;
}
for(LL i=;i<;++i)
{
for(LL j=;j<;++j)
{
if((n-f[j])%f[i]==&&(n-f[j])/f[i]>f[i]&&(n-f[j])/f[i]>f[j])
ans[tail++]=(n-f[j])/f[i];
}
}
for(LL i=;i<;++i)
{
for(LL j=;j<;++j)
{
for(LL k=;k<;++k)
{
LL l,r;
l=,r=;
LL ii=f[i];
LL jj=f[j];
LL kk=f[k];
while(r-l>)
{
LL x=(l+r)>>;
LL cal=ii*x*x+jj*x+kk;
if(cal>=n)r=x;
else l=x;
}
if(ii*l*l+jj*l+kk==n&&l>f[i]&&l>f[j]&&l>f[k])
ans[tail++]=l;
if(ii*r*r+jj*r+kk==n&&r>f[i]&&r>f[j]&&r>f[k])
ans[tail++]=r;
}
}
} for(LL i=;i*i*i<=n;++i)
{
LL x=n;
int flag=;
while(x)
{
LL tmp=x%i;
if(tmp<||tmp>)
flag=;
x/=i;
}
if(flag)
ans[tail++]=i;
}
sort(ans,ans+tail);
tail=unique(ans,ans+tail)-ans; printf("Case #%d: %d\n",++ri,tail);
}
return ;
}
HDU 4937 Lucky Number(2014 Multi-University Training Contest 7)的更多相关文章
- 枚举 + 进制转换 --- hdu 4937 Lucky Number
Lucky Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- 2014多校第七场1003 || HDU 4937 Lucky Number
题目链接 题意 : 给定一个十进制n,让你转化成某个进制的数,让这个数只包含3 4 5 6这些数字,这个进制就成为n的幸运数字,输出有多少幸运数字,例如19,5进制表示是34,所以5是19的一个幸运数 ...
- HDU 4937 Lucky Number (数学,进制转换)
题目 参考自博客:http://blog.csdn.net/a601025382s/article/details/38517783 //string &replace(iterator fi ...
- hdu 4937 Lucky Number
虽然算法清晰的不能再清晰,但是实现总是边角料错这错那. 题目大意: 给出n,找出一些进制,使得n在该进制下仅为3,4,5,6表示 解题思路: 首先,4-10000进制直接枚举计算出每一位 此外,最多只 ...
- HDU 4937 Lucky Number 规律题_(:зゝ∠)_
把全部合法的进制打出来会发现合法的进制都是在 n/3 n/4 n/5的边上 然后暴力边上的进制数.. #include <cstdio> #include <set> type ...
- HDU 4937 Lucky Number 搜索
题意: 给你一个数,求在多少种不同的进制下这个数每一位都是3.4.5.6中的一个. 思路: 搜索.枚举这个数在任意进制下的表示,判断是否合法.当数字只有3.4.5.6时,必定有无穷种. 因为数字太大, ...
- HDOJ 4937 Lucky Number
当进制转换后所剩下的为数较少时(2位.3位),相应的base都比較大.能够用数学的方法计算出来. 预处理掉转换后位数为3位后,base就小于n的3次方了,能够暴力计算. . .. Lucky Numb ...
- HDU 3346 Lucky Number
水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...
- hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
随机推荐
- 在Windows系统下用命令把应用程序添加到系统服务
在Windows系统下用命令把应用程序添加到系统服务,使用SC命令. 加入服务格式如下:sc create ServiceName binPath= 程序路径 start= auto(等号后面的空格是 ...
- Thinkphp各大支付平台在线支付集成源码
用Thinkphp给客户开发网站的时候需要用到各大平台付款功能,下面就免费分享给大家,此类是个成熟类,网上down下来的,经过修改测试了(可以直接拿来使用,附带使用方法,有需要的朋友请拿走.),如果有 ...
- Django中的QuerySet查询优化之select_related
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然Q ...
- react+redux开发谷歌插件
React Developer Tools Redux Dev Tools
- 【网摘】CURL常用命令
原文地址: http://www.thegeekstuff.com/2012/04/curl-examples/ 下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://w ...
- [转]解决:Entity Framework + MariaDb(MySql)中文乱码
转自:http://fenglongsheng.com/post/6640.html 今天写一MVC4+Entity Framework+Mysql的小例子时,发现中文写到数据库里是N个问号(乱码哦~ ...
- EJB 简介
EJB: 被称为java企业bean,服务器端组件,核心应用是部署分布式应用程序.用它部署的系统不限定平台.实际上ejb是一种产品,描述了应用组件要解决的标准 标准: 可扩展 (Scalable) ...
- unity自带寻路Navmesh入门教程(三)
继续介绍NavMesh寻路的功能,接下来阿赵打算讲一下以下两个例子,先看看完成的效果: 第一个例子对于喜欢DOTA的朋友应该很熟悉了,就是不同小队分不同路线进攻的寻路,红绿蓝三个队伍分别根据三条路 ...
- 使用vs中的发布功能发布asp.net core项目时遇到ERROR_CERTIFICATE_VALIDATION_FAILED错误
今天将VS2015编制的一个asp.net core项目发布到服务器进行测试,使用的是vs中主菜单"生成"中的"发布"功能. 遇到了一个错误,在网上反复检索尝试 ...
- MySQL TCL 整理
TCL(Transaction Control Language)事务控制语言SAVEPOINT 设置保存点ROLLBACK 回滚SET TRANSACTION