Problem Description

定义一种数字称为等凹数字,即从高位到低位,每一位的数字先递减再递增,且该数是一个回文数,即从左读到右与从右读到左是一样的,仅形成一个等凹峰,如543212345,5544334455是合法的等凹数字,543212346,123321不是等凹数字。现在问你[L,R]中有多少等凹数字呢?L,R<=1e18(小于等于2位的无凹峰)

Input

第一行一个整数T,表示有T组数据,T <= 110.

接下来的每行包含两个用空格分开的整数L R,保证L,R<=1e18.

Output

对于每组输入,在一行输出一个整数,代表[L,R]中等凹数字的个数。

Sample Input
2
1 100
666 666666
Sample Output
0
356
 
没有dfs算不了的问题,如果有,那就用天河一号去dfs(误)
每次都从L到R循环挨个验证肯定TLE,所以用了递归去构造回文数,每次尝试填一个数字,且要求小于等于上一个数字,填完之后给他左右对称过去,这样就生成了一个等凹数字,把他丢到答案数组里面。
对称有两种,比如54322345, 5432345,所以写了两个create分别生成这两种等凹。
有意思的是,从1到1e18,有184574个等凹数。
#include<cstdio>
#include<algorithm>
using std:: sort;
long long res[], NUM = ;
int temp[] = {};
void create(int n)//
{
long long ans = ;
for(int i = n; i <= *n-; i++)
temp[i] = temp[*n-i];
for(int i = ; i <= *n-; i++)
{
ans *= ;
ans += temp[i];
}
res[NUM++] = ans;
}
void create2(int n)
{
long long ans = ;
for(int i = n+; i <= *n; i++)
temp[i]= temp[*n+-i];
for(int i = ; i <= *n; i++)
{
ans *= ;
ans += temp[i];
}
res[NUM++] = ans;
}
void dfs(int cur, int n)//create n down words 1 : n
{
if(cur == n+)
{
int ok = , cmp = temp[];
for(int i = ; i <= n; i++)//平 胸 禁 止(反正也没人看到(误))
if(temp[i] != cmp)
ok = ;
if(ok)
{
create(n);
create2(n);
}
return;
}
for(int i = ; i <= ; i++)
{
if(i <= temp[cur-])
{
temp[cur] = i;
dfs(cur+, n);
}
}
}
void test()
{
for(int i = ; i < NUM; i++)
printf("%lld ", res[i]);
} int main()
{
for(int i= ; i <= ; i++)
dfs(, i);
sort(res, res+NUM);
//test();
int t;
scanf("%d", &t);
while(t--)
{
long long L, R, l, r;
scanf("%lld%lld", &L, &R);
for(int i = ; i < NUM; i++)
if(res[i] >= L)
{
l = i;
break;
}
for(int i = NUM-; i >= ; i--)
if(res[i] <= R)
{
r = i;
break;
}
printf("%lld\n", r-l+);
}
return ;
}
 

东大oj1155 等凹函数的更多相关文章

  1. 东大OJ-Max Area

    1034: Max Area 时间限制: 1 Sec  内存限制: 128 MB 提交: 40  解决: 6 [提交][状态][讨论版] 题目描述 又是这道题,请不要惊讶,也许你已经见过了,那就请你再 ...

  2. 开学&东大一周游记

    明天就要离开生活但并没有学到多少东西的东大了,不舍,这是真的,因为真的是没学到多少就要走了.但是终归是有收获的,比如感受到了舍长这样的大牛的学习态度,东大的浴池真的很棒,我很感激吉大的伙食诸如此类.感 ...

  3. 东大oj-1511: Caoshen like math

    Worfzyq likes Permutation problems.Caoshen and Mengjuju are expert at these problems . They have n c ...

  4. 东大OJ-1588: Routing Table

    题目描述 In the computer network, a Router is a device which finds an optimal way to transmit the datagr ...

  5. 东大oj-1591 Circle of friends

    题目描述 Nowadays, "Circle of Friends" is a very popular social networking platform in WeChat. ...

  6. 东大OJ-1544: GG的战争法则

    题目描述 你在桥上看风景 看风景的人在楼上看你 明月装饰了你的窗子 你装饰了我的梦 这是GG在长坂坡发出的感叹. 三年前GG莫名的穿越到了三国时期,在这三年里他看尽了各种杀戮,心里早已麻木.GG他渴望 ...

  7. 东大OJ-最大子序列问题的变形

    1302: 最大子序列 时间限制: 1 Sec  内存限制: 128 MB 提交: 224  解决: 54 [提交][状态][讨论版] 题目描述 给定一个N个整数组成的序列,整数有正有负,找出两段不重 ...

  8. 东大OJ-双塔问题

    1212: VIJOS-P1037 时间限制: 0 Sec  内存限制: 128 MB 提交: 58  解决: 19 [提交][状态][讨论版] 题目描述         2001年9月11日,一场突 ...

  9. 东大OJ-Prim算法

    1222: Sweep the snow 时间限制: 1 Sec  内存限制: 128 MB 提交: 28  解决: 18 [提交][状态][讨论版] 题目描述 After the big big s ...

随机推荐

  1. JAVA获取程序(打成jar或classpath)所在目录

    一.简述 JAVA获取程序(打成jar或classpath)所在目录. 二.代码 package dearcloud.utils.context; import dearcloud.utils.Str ...

  2. [Java] zjdbcping:JDBC数据库连接测试工具

    作者: zyl910 一.缘由 当数据库服务器很多时,或者要与第三方公司做数据库表交换时,此时觉得若有一个简单快捷的数据库连接测试工具就好了. 因为若是采取直接把程序部署到tomcat等容器再测试的办 ...

  3. windows10开启wst子系统

    需求描述: 在玩docker发现需要linux运行玩转,直接在vmware虚拟机上跑 ,性能有损耗.想直接在windows下运行docker 问题解决: windows10的wst子系统可以安装lin ...

  4. Ubuntu apt-get彻底卸载软件包【转】

    原文地址:https://blog.csdn.net/get_set/article/details/51276609 最近对ubuntu卸载参数的详细程度了解不够:转载已了解查用. 如果你关注搜索到 ...

  5. C++ thread类多线程编程

    https://blog.csdn.net/dcrmg/article/details/53912941 多线程操作的thread类,简单多线程示例: #include <iostream> ...

  6. 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

    <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛  ...

  7. 关于VMware Linux 虚拟机忘记root 密码找回

    因为昨天新安装过虚拟机设置了新的密码,再加上我好长时间没有用自己旧的虚拟机,导致忘记了密码,原来虽然知道在单用模式下,找回密码,但是确实是自己从来都没有做过,还好我们组大手飞翔哥告诉了我,怎么找回ro ...

  8. linux服务查看

    (1)#service servicename status比如查看防火墙:#service iptables status (2)#chkconfig --list |grep 服务名 比如查看te ...

  9. 【C语言】 重拾

    [C语言] 因为以前学过C语言,只不过太长时间不用,已经忘得差不多了… 所以这篇文章的性质是把C语言中一些对于现在的我不是很符合预期的知识点记录一下. ■ HelloWorld程序 HelloWorl ...

  10. sprintf的Bug

    ]; sprintf(buffer,,,); 这样一般不崩溃,但是10次,有那么一次会崩溃 我只能说后面改成 0.0就可以了...