有两种车牌号。让你判断第二种是不是在第一种之后且在第一种出Kth之前的车牌号。

本解中是把前面的字母看成一位十进制的数。自己是一个26或者21进制的数。如果比较时有两种。那么第一种和第一种的最后一个比。第二种和第二种的第一种比。第一种的最后一个 和 第二种的第一个 相差1.。那么。两差相加再加1就是这两个数的差了。

因为没有排除前一个是一种。后一个是第二种的情况RE了好久。

感觉像一个模拟题、但是转换成数字那。又觉得很巧妙。

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std; char l1[] = {"ZZZ9999"};
char l2[] = {"BBBBB00"};
char temp[] = {"BDEFGHJKLNOQRSTUVWXYZ"};
char error[] = {"ACMPI"}; long long ask(char a[], char b[]) // 求两个数字只差。实际上只有两种。
{
long long sum = , suma = , sumb = ;
if (a[]>='' && a[]<='' && b[]>='' && b[]<='')
{
for (int i=; i<; ++i)
{
suma += (a[i]-'A')*pow(, -i);
}
suma *= ;
for (int i=; i<; ++i)
{
suma += (a[i]-'')*pow(, -i);
}
for (int i=; i<; ++i)
{
sumb += (b[i]-'A')*pow(, -i);
}
sumb *= ;
for (int i=; i<; ++i)
{
sumb += (b[i]-'')*pow(, -i);
}
sum = suma - sumb; // 传参时 a[]是SM b[]是SI.
}
else if (a[]>='A' && a[]<='Z' && b[]>='A' && b[]<='Z')
{
for (int i=; i<; ++i)
{
int tempc = ;
for (int j=; j<; ++j)
{
if (a[i] == temp[j])
{
tempc = j;
break;
}
}
suma += tempc*pow(, -i);
}
suma *= ;
suma += (a[]-'')* + (a[]-'');
for (int i=; i<; ++i)
{
int tempc = ;
for (int j=; j<; ++j)
{
if (b[i] == temp[j])
{
tempc = j;
break;
}
}
sumb += tempc*pow(, -i);
}
sumb *= ;
sumb += (b[]-'')* + (b[]-'');
sum = suma - sumb;
}
else
{
suma = ask(a, l2);
sumb = ask(l1, b);
sum = suma + sumb + ;
}
return sum;
} int check(char s[]) // 判断第二个字符串是否合法
{
bool ok1 = true;
bool ok2 = true;
if (s[]>='A' && s[]<='Z')
{
for (int i=; i<; ++i)
{
if (s[i] == 'A' || s[i] == 'C' || s[i] == 'I' || s[i] == 'M' || s[i] == 'P')
return ;
}
}
for (int i=; i<; ++i)
{
if (s[i]<'A' || s[i]>'Z')
{
ok1 = false;
break;
}
}
for (int i=; i<; ++i)
{
if (s[i]<'' || s[i]>'')
{
ok1 = false;
break;
}
}
for (int i=; i<; ++i)
{
if (s[i]<'A' || s[i]>'Z')
{
ok2 = false;
break;
}
}
for (int i=; i<; ++i)
{
if (s[i]<'' || s[i]>'')
{
ok2 = false;
break;
}
}
if (ok1) return ;
if (ok2) return ;
return ;
} int main()
{
long long int c;
char sm[], si[];
while(cin >> sm >> si >> c)
{
if (sm[] == '*' && si[] == '*' && c == )
break;
if (!check(si))
{
cout << "N\n";
continue;
}
if (si[] >= '' && si[] <= '' && sm[] >= 'A' && sm[] <= 'Z')
{
cout << "N\n";
continue;
}
long long ans = ask(si, sm);
if (ans> && ans<=c)
{
cout << "Y\n";
}
else cout << "N\n";
}
return ;
}

HDU 1934 特殊数字的更多相关文章

  1. hdu acm 1028 数字拆分Ignatius and the Princess III

    Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  2. HDOJ(HDU) 2178 猜数字(题意有点难理解、、、)

    Problem Description A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" . 问B猜n次可以猜到的最大数. ...

  3. HDU 1172 猜数字(DFS)

    猜数字 Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  4. HDU 1934 树状数组 也可以用线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view. ...

  5. HDU 2178.猜数字【分析能力练习】【读题能力练习】【8月10】

    猜数字 Problem Description A有1数m.B来猜.B每猜一次,A就说"太大"."太小"或"对了" . 问B猜n次能够猜到的 ...

  6. HDU 1172 猜数字 (模拟)

    题目链接 Problem Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜 ...

  7. hdu 1172 猜数字

    猜数字 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. hdu - 1172 猜数字 (思维题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1172 这个题换一种想法,可以找出四位数中所有满足条件的数看是否只有一个. #include <iostre ...

  9. hdu 5059 判断数字表示方式以及范围合法(int型之内)

    题意:       给你一个串和两个整数a,b,问你这个串表示的数字是否合法,并且在a,b之间, 和法的要求是无论是正数还是负数都没有前导0,并且注意 -0 是不合法的. 思路:       写了将近 ...

随机推荐

  1. canvas压缩图片

    1.canvas.toDataUrl压缩图片 canvas的toDataUrl方法可以将内容导出为base64编码格式的图片,采用base64编码将比源文件大1/3,但是该方法可以指定导出图片质量,所 ...

  2. jQuery 源码分析:当 selector 传来一个函数时,怎么进行处理?

    本文章为 0.9 版本,将会在稍后润色更新.本文使用的 jQuery 版本为 3.4.0 我们知道使用 $ 操作符时,可以往里面塞很多类型的参数,字符串,对象,函数...,jQuery 会根据不同的参 ...

  3. C# 将文件转换为 Stream

    public Stream FileToStream(string fileName) { // 打开文件 FileStream fileStream = new FileStream(fileNam ...

  4. linux下安装微信小程序开发工具

    一.环境:: ubuntu 16.04 二.安装过程: 2.1 安装wine sudo apt-get install wine 2.2 安装nwjs-sdk 2.2.1 下载linux版nwjs-s ...

  5. 海量数据处理-BitMap算法

    一.概述 本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如BitMap解决海量数据寻找重复.判断个别元素是否在海量数据当中等问题.最后说说BitMap的特点已经在各个场景 ...

  6. 源码编译安装keepalived

    首先到官网下载需要的包:http://www.keepalived.org/download.html [root@localhost local]# .tar.gz [root@localhost ...

  7. 同步TreeView中父结点和子结点的状态[以及Treeview的bug]

    此代码仅仅是二级结点,即父结点下面只有一层子结点,只有两层结构 /// <summary> /// 某个结点的CheckBox被选中 /// </summary> /// &l ...

  8. POJ 1625 Censored!(AC自动机+高精度+dp)

    http://poj.org/problem?id=1625 题意: 给出一些单词,求长度为m的串不包含这些单词的个数. 思路: 这道题和HDU 2243和POJ 2778是一样的,不同的是这道题不取 ...

  9. linux 系统管理的10个小技巧

    1.恢复屏幕 尝试输入:#cat /bin/cat 输入的屏幕内容非常凌乱,那么该怎么做? 输入:#reset 那么屏幕恢复正常了,比关闭再次登录好多了,特别是经过至少5台机器和SSH2才能到达 2. ...

  10. MVC ---- 如何扩展方法

    先定义一个扩展类: public static class StringExtend { //扩展一个string的方法 public static bool IsNullOrEmpty(this s ...