有两种车牌号。让你判断第二种是不是在第一种之后且在第一种出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. 汽车OBD接口定义

    汽车上的OBD-II接口(母):  ELM327用到的引脚: 2: SAE-J1850 PWM和SAE-1850 VPW总线(+) 4. 车身地 5. 信号地 6. CAN high (ISO 157 ...

  2. Codeforces Round#413 Problem A - C

    Problem#A Carrot Cakes vjudge链接[here] (偷个懒,cf链接就不给了) 题目大意是说,烤面包,给出一段时间内可以考的面包数,建第二个炉子的时间,需要达到的面包数,问建 ...

  3. Win32 文件拖拽

    1.响应系统消息  WM_DROPFILES 2.在响应函数里面获取拖拽文件路径 LRESULT OnDropFiles(UINT uMsg, WPARAM wParam, LPARAM lParam ...

  4. python2.7+pyqt4 +eric4安装配置

    eric4安装与汉化一直没找到合适python的IDE工具,直到遇到了eric4这款开源软件.然而在使用过程中发现输出的中文字符竟然是乱码,修修改改配置总算正常显示了,何不干脆把软件界面也汉化下. 一 ...

  5. shell下如何删除文件的某一列

    答:cat file | awk '{$1=null;print $0}' (删除第一列)

  6. C指针 的一些练习

    注:此篇是我使用指针敲的一些题目的集成,有一些代码是重复的(挠头).这样做的目的是进行前后的一些比较和收获一些心得(?). 关于上一次我上台的题目: 题目:输入十个整数,进行排序. 做法1:(传递指针 ...

  7. Web前端代码规范

    新增:http://materliu.github.io/code-guide/#project-naming HTML 原则1.规范 .保证您的代码规范,保证结构表现行为相互分离.2.简洁.保证代码 ...

  8. LA 3135 阿格斯(优先队列)

    https://vjudge.net/problem/UVALive-3135 题意: 你的任务是编写一个称为Argus的系统.该系统支持一个Register的命令 Register Q_num Pe ...

  9. MVC ---- EF4.0和EF5.0增删改查的写法区别及执行Sql的方法

    EF4.0和EF5.0增删改查的写法区别 public T AddEntity(T entity) { //EF4.0的写法 添加实体 //db.CreateObjectSet<T>(). ...

  10. Cocos2d-x学习笔记(四) HelloWorld场景类

    类定义原型如下: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" ...