有两种车牌号。让你判断第二种是不是在第一种之后且在第一种出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. 小K(wifi)插座剖解

    1.主控 AR9331 400MHZ MIPS 24k内核 2.flash:w9425G6JH-5 1352P 6316CF500ZY  RAM 32M

  2. STM32系统时钟为什么没有定义呢

    对于使用3.5版本库开发的STM32学习者 有时候不清楚为什么没有时钟定义 那么我们就简单的讲解下吧: 1,函数从启动文件开始运行(汇编文件) 2,若是hd.s 请看151行LDR     R0, = ...

  3. poj 1274 The Perfect Stal - 网络流

    二分匹配传送门[here] 原题传送门[here] 题意大概说一下,就是有N头牛和M个牛棚,每头牛愿意住在一些牛棚,求最大能够满足多少头牛的要求. 很明显就是一道裸裸的二分图最大匹配,但是为了练练网络 ...

  4. intent bundle的使用

    1.什么是bundle Bundle主要用于传递数据:它保存的数据,是以key-value(键值对)的形式存在的.我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean ...

  5. Python3基础 函数 未指定返回值,返回NONE

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. Bootloader之uBoot简介

    本文转载自:http://blog.ednchina.com/hhuwxf/1915416/message.aspx 一.Bootloader的引入 从前面的硬件实验可以知道,系统上电之后,需要一段程 ...

  7. Java-master(github)教材整理

    helloworld class HelloWorld { public static void main(String[] args) { System.out.println("hell ...

  8. selenium-chrome-headless

    #coding=utf-8 from selenium import webdriver import time chrome_options = webdriver.ChromeOptions() ...

  9. STL_iterator返回值

    1. iterator的类型 有 单向的/双向的/可以随意移动的... 2. 一些 容器/算法 的返回值 是 iterator类型的,如何确定 返回的 iterator是什么类型的? 3.

  10. python - 面向对象编程(初级篇)

    写了这么多python 代码,也常用的类和对象,这里准备系统的对python的面向对象编程做以下介绍. 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计) ...