http://acm.hdu.edu.cn/showproblem.php?pid=4937

给定一个数n,若这个数在base进制下全由3,4,5,6组成的话,则称base为n的幸运进制,给定n,求有多少个幸运进制。无穷多个的话输出-1,单个位置上超过9用相应的字符表示。

特判n为3~6才会无穷多解

暴力+二分

先特别求出只有两位和用二分求出只有三位表示的对应base数,然后从base = 4开始暴力遍历即可

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <queue>
#include <vector>
#include<set>
#include <iostream>
#include <algorithm>
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d:%d",&x,&y)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long LL; int main() {
int _;RD(_);LL n;
for(int tt = 1;tt <= _;++tt){
int i,j,k;
scanf("%I64d",&n);
LL t = n;
bool flag = 1;
if(t>=3&&t<=6){
printf("Case #%d: -1\n",tt);
continue;
}
if (n <= 10){
printf("Case #%d: 0\n",tt);
continue;
}
LL ans = 0;
for(i=3;i<=6;++i){
t = n-i;
for(j=3;j<=6;++j)
if(t % j == 0 && t/j > i && t/j > j) ++ans;
}
for (i=3;i<=6;++i)
for (j=3;j<=6;++j)
for (k=3;k<=6;++k){
LL l = 0 , r = (LL)sqrt(n)+1 , mid;
while (l < r){
mid = (l+r)>>1;
t = i + mid*mid*k + mid*j;
if (t >= n) r = mid;
else l = mid+1;
}
t = i + l*l*k + l*j;
if (t == n && i < l && j < l && k < l) ++ans;
}
for (j=4;j;++j){
t = n;
bool flag = 1;
k = 0;
while (t){
int tmp = t % j;
k++;
if(tmp <3 || tmp > 6){
flag = 0;
}
t /= j;
}
if(k < 4)break;
if (flag) ++ans;
}
printf("Case #%d: %I64d\n",tt,ans);
}
return 0;
}

hdu 4937 base进制只含3456的base数的更多相关文章

  1. hdu 5142(数学-进制转换)

    NPY and FFT Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  2. 【CCS仿真】用matlab把CCS保存的32位16进制的数据转换为十进制的数

    2013-12-04 16:37:28 使用fscanf函数即可完成. 例如,CCS保存的.dat文件Copy_of_forward_i_f.dat如下: 1651 1 81008800 0 4000 ...

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

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

  4. c/c++面试题(4)字符串翻转/打印任意进制格式/类型转换

    1.字符串的翻转,这里一般是字符数组.不包括字符串字面值. char* reversal_str(char* str,size_t size); 翻转之后的字符串是原来的字符串的翻转. #includ ...

  5. python3 第十九章 - 写一个10进制转任意进制的函数

    我们先回忆下之前所学的进制转换的知识(详见:第十章),10进制转其它进制的方法是: 整数部分,除基取余,逆序排列 小数部分,乘基取整,顺序排列 负数,按绝对值处理 好,假设我们需要转化的数都是正整数, ...

  6. Uva 10061 进制问题

    题目大意:让求n!在base进制下的位数以及末尾0的连续个数. 多少位 log_{10}256=log_{10}210^2+log_{10}510^1+log_{10}6*10^0 可以发现,只和最高 ...

  7. 求x!在k进制下后缀零的个数(洛谷月赛T1)

    求x!在k进制下后缀和的个数 20分:     求十进制下的x!后缀和的个数 40分: 高精求阶乘,直接模拟过程 (我不管反正我不打,本蒟蒻最讨厌高精了) 60分     利用一个定理(网上有求x!在 ...

  8. Python 学习之进制与编码

    进制 日常生活中,我们最熟悉的数据就是十进制计数.它的数值部分由十个不同的数字符号0.1.2.3.4.5.6.7.8.9来表示,我们把这些数字符号叫做数码,表示十种不同的状态.数码处于不同的位置(或数 ...

  9. poj 2305(指定进制,大数取模)

    题意:输入一个进制b,在输入两个基于b进制的大整数 x,y ,求x%y的b进制结果. http://162.105.81.212/JudgeOnline/problem?id=2305 函数: Str ...

随机推荐

  1. Andriod ----配置环境变量

    注意:跟java相关的目录不要有中文和空格. 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:D:\Java ...

  2. Taxi

    /* After the lessons n groups of schoolchildren went outside and decided to visit Polycarpus to cele ...

  3. Python之路(第二十一篇) re模块

    一.re模块 正则表达式本身是一种小型的.高度专业化的编程语言,正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是re,正则表达式模式被编译成一系列的字节码,然 ...

  4. 多种方式判断PC端,IOS端,移动端

    1. 通过判断浏览器的userAgent,用正则来判断手机是否是IOS(苹果)和Android(安卓)客户端. var u = navigator.userAgent; var isAndroid = ...

  5. python输出格式对齐问题

    采用.format打印输出时,可以定义输出字符串的输出宽度,在 ':' 后传入一个整数, 可以保证该域至少有这么多的宽度. 用于美化表格时很有用. >>> table = {'Goo ...

  6. OneZero_Aphla发布总结以及自己的体会

    Aphla发布正式结束了.清明时节,总要祭奠点什么. 以下是这一周的燃尽图. 可以发现,并没有燃尽.所以OneZero的Aphla发布失败了. 失败原因有至少以下三点: 1.组长分配任务存在隐患,高风 ...

  7. Visual Studio Plus 开发

    参考文档:Developing Visual Studio Extensions http://msdn.microsoft.com/en-us/library/dd885119(v=vs.120). ...

  8. Idea项目如何迁移到Eclipse

    CTRL + SHIFT + ALT + S键 (即File>Project Structure), 按照如图一样设置,设置完成后就可以直接导入到eclipse了

  9. MySQL API函数

    MySQL提供了很多函数来对数据库进行操作,大致可以分为以下几类:        第一部分 控制类函数         mysql_init()初始化MySQL对象    mysql_options( ...

  10. denyhost部署

    部署 tar xzf DenyHosts-2.6.tar.gz -C /uc cd /uc/DenyHosts-2.6 python setup.py install running install ...