P1362 兔子数

题目描述

设 S(N ) 表示 N 的各位数字之和,如 S(484) = 4+8+4 = 16, S(22) = 2+2 = 4。如果一个正整数满足 S(x*x) = S(x) *S(x),我们称之为 Rabbit N umber。比方说,22 就是一个 Rabbit N umber,因为 S(484) = S(22) *S(22)。

现在,给出一个区间 [L, R],求在该区间内的 Rabbit N umber 的个数。

输入输出格式

输入格式:

输入仅一行,为空格隔开的两个数 L 和 R。

输出格式:

输出仅一行一个整数,表示所求 Rabbit N umber 的个数。

输入输出样例

输入样例#1:

样例1:22 22

样例2:484 484

样例3:1 58

样例4:58 484

样例5:1000000000 1000000000
输出样例#1:

样例1:1

样例2:0

样例3:12

样例4:24

样例5:1

说明

1 <= L <= R <= 10^9

思路:

  1.首先看数据范围(1 <= L <= R <= 10^9),这说明最大的数S(a*a)一定会比18*9(162)要小(因为S是加和嘛~),所以S(a)就一定会比13要小,因为13*13=169(稍微>162),所以不可能会比13要大.

  2.因为经过大量实(打)验(表)之后得出每一个兔子数的每一位上的数一定会<=3,因为如果某数字x的一位a>=4.那么它在该位的贡献是a^2的 但是在 x 中这一位自乘进了一位 故贡献为 a^2/10+a^2%10

  3.那么这道题的思路就很明了了:

            搜索+剪枝就好.

坑点:

  要记得排次序,不能够直接输出cnt!!!

上代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#define LL long long
using namespace std; int L,R,cnt,ANSWER;
int ans[]; void build(int x,int y,int z)
{
LL a=x;
a=a*a;
int b=;
if(x>=L && x<=R)///在区间之内
{
while(a)
{
b+=a%;
a/=;
}
if(y*y==b)///寻找满足条件的数,并进行储存
ans[++cnt]=x;
}
///停止的条件
if(z>R) return;
for(int i=;i<;i++)
build(x*+i,y+i,z*);
} int main()
{
scanf("%d%d",&L,&R);
build(,,);
/*
for(int i=1;i<=cnt;i++)
printf("%d ",ans[i]);
printf("\n");
printf("--------------------------\n");
*/
sort(ans+,ans++cnt);
/*
for(int i=1;i<=cnt;i++)
printf("%d ",ans[i]);
printf("\n");
*/
for(int i=;i<=cnt;i++)
{
if(ans[i-]!=ans[i])
ANSWER++;
}
printf("%d",ANSWER);
return ;
}

luogu P1362 兔子数 x的更多相关文章

  1. 洛谷 P1362 兔子数

    题目描述 设 S(N ) 表示 N 的各位数字之和,如 S(484) = 4+8+4 = 16, S(22) = 2+2 = 4.如果一个正整数满足 S(x*x) = S(x) *S(x),我们称之为 ...

  2. BZOJ2432 [Noi2011]兔农

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  3. 2432: [Noi2011]兔农 - BZOJ

    Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个月 ...

  4. BZOJ 2432 兔农

    Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个月 ...

  5. 【bzoj2432】【NOI2011】兔农

    题目描述 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小 朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这 对兔子从第三个月开始,每个 ...

  6. [BZOJ2432][Noi2011]兔农 矩阵乘法+exgcd

    2432: [Noi2011]兔农 Time Limit: 10 Sec  Memory Limit: 256 MB Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到 ...

  7. java例题_01 不死神兔!

    1 /*1 [程序 1 不死神兔] 2 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 3 程 ...

  8. BZOJ 1001: [BeiJing2006]狼抓兔子

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 20029  Solved: 4957[Submit][ ...

  9. bzoj 1001狼抓兔子(对偶图+最短路)最大流

    推荐文章:<浅析最大最小定理在信息学竞赛中的应用>--周冬 题目 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...

随机推荐

  1. 正则爬取某段子网站前20页段子(request库)

    首先还是谷歌浏览器抓包对该网站数据进行分析,结果如下: 该网站地址:http://www.budejie.com/text 该网站数据都是通过html页面进行展示,网站url默认为第一页,http:/ ...

  2. CSS3彩色进度条加载动画 带进度百分比

    在线演示       本地下载

  3. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 将文本文件(csv)数据导进数据库

    第二节 将文本文件数据导进数据库 该小节介绍如何用BIML生成ssis包,将货币文本导入到数据库currency的表中. SSIS组件: Connection Manager组建管理connectio ...

  4. Makoto and a Blackboard CodeForces - 1097D (积性函数dp)

    大意: 初始一个数字$n$, 每次操作随机变为$n$的一个因子, 求$k$次操作后的期望值. 设$n$经过$k$次操作后期望为$f_k(n)$. 就有$f_0(n)=n$, $f_k(n)=\frac ...

  5. Java Integer中的IntegerCache小记

      同事今天给我发了一个关于Java拆装箱的ppt,里面有这么一段代码 Integer c = Integer.valueOf(3); Integer d = Integer.valueOf(3); ...

  6. vue学习【一】vue引用封装echarts并展示多个echarts图表

    大家好,我是一叶,经过一段时间对vue的学习,我打算把vue做一个系列,把踩过的坑和大家分享一下. 现在开始第一章:vue引用并封装echarts 在文章开始前,我先舔波echarts(真香).阿里的 ...

  7. react 不同环境配置不同域名

    npm eject 先将配置文件暴露出来 将scripts中的build文件复制一份,改名为你需要的名字 将其中的 process.env.NODE_ENV 赋值为你需要的环境 在package.js ...

  8. jQuery效果--隐藏和显示

    jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: $("#hide").click( ...

  9. 使用 flask-restful 编写 自己的 ai web service

    本项目在 win 平台采用 pycharm 编写, 技能与环境要求: python 基础, web 基础知识, python.exe = 3.6+ 算法>第四版,操作系统推荐<现代操作系统 ...

  10. LVM使用手册简化命令

    创建 hot_add    --查看新增的lun pvcreate /dev/sdb   --创建物理卷 pvcreate /dev/sdc   --创建物理卷 pvcreate /dev/sdd   ...