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. 肤色检测一例-使用rgb颜色模型

    代码: /* 输入:rgb图像 输出:与输入图像尺寸相同的灰度图,若rgb图中某像素检测为肤色,则灰度图中对应像素为255,否则为0 */ void SkinRGB( Mat &rgb,Mat ...

  2. 用户态tcp协议栈调研

    一.各种用户态socket的对比 1.MTCP 简单介绍: 韩国高校的一个科研项目,在DPDK的2016年的技术开发者大会上有讲,所以intel将这个也放到了官方上,所以一般搜索DPDK的用户态的协议 ...

  3. 探索未知种族之osg类生物---呼吸分解之事件循环一

    事件循环和更新循环 终于到了我们嘴里经常念叨的事件循环.更新循环以及渲染循环了.首先我们来区分一下事件循环和渲染循环,他们两个首先是两个不同顺序执行的过程,我们有时候会用到任意node的updateC ...

  4. git报“commiter email "root@localhost.localdomain"does not match your user account”

    首先检查账户邮箱配置是否正确,检查方法: git config --list 发现邮箱及帐号配置正确,但是git push时仍然报如题错误: 原因:git执行add.commit 时已经记录下了做了该 ...

  5. 11. pt-heartbeat

    pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop ------------------------------------- ...

  6. python提取百度经验<标题,发布时间,平均流量,总流量,具体的链接>

    之前想研究下怎么抓网页数据.然后就有了下面的练习了. 如有BUG.也纯属正常. 只是练习.请勿投入产品使用. #!/usr/bin/python # -*- coding: utf-8 -*- #Fi ...

  7. POJ 2014.K-th Number 区间第k小 (归并树)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 57543   Accepted: 19893 Ca ...

  8. a[i++]

    今天才知道,a[i++]到底是什么意思:: 其实也很简单了,就是a[i]的值还是a[i],然后i自增1: 把这篇博客当作平常各种错题博客吧,把各种从网上抄的代码不懂的地方写到这个地方算了 ====== ...

  9. c#比delphi先进的地方

    下面是一个例子: using System;namespace HelloWorld{  class Hello{            private static string DateDiff( ...

  10. [Groovy] 创建Excel,追加Excel

    package ScriptLibrary import java.awt.Color import java.awt.GraphicsConfiguration.DefaultBufferCapab ...