设a为一个质数,模数为另一个质数,然后暴力算多项式的答案,如果答案相等就认为两个多项式相等。

这种hash有出错概率的题为什么还是要用hash呢?因为出错的概率实在太小了,a和模数的值取得好出题人根本没法卡。

然后贡献了2次WA,第一次因为判断数字时没判断边界,第二次因为乘法运算时爆int了!!!

hash大法好~

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 10003;
const int a = 10007;
const int p = 100007; char s[N], c[N], stf[N];
int num, now, stnum[N], topnum, sty[N], topfh;
int get(char c) {if (c == '+' || c == '-') return 1; if (c == '*') return 2; if (c == '^') return 3;}
bool fh(char c) {return c == '+' || c == '-' || c == '*' || c == '^' || c == '(' || c == ')';}
int ipow(int a, int b) {
ll s = 1;
for(int i = 1; i <= b; ++i)
s = s * a % p;
return (int) s;
}
int cal(char fh, int a, int b) {
switch (fh) {
case '+':
return (a + b) % p;
break;
case '-':
return (a - b + p) % p;
break;
case '*':
return (int) (1ll * a * b % p);
break;
case '^':
return ipow(a, b);
break;
}
}
int _() {
int len = strlen(s), tmp = 0, j = 100, k;
c[0] = ' ';
for(int i = 0; i < len; ++i)
if (s[i] != ' ') c[++tmp] = s[i];
c[tmp + 1] = ' ';
len = tmp; tmp = 1; topnum = topfh = 0;
while (tmp <= len) {
if (fh(c[tmp])) {
if (c[tmp] == '(') j += 10;
else if (c[tmp] == ')') j -= 10;
else {
k = get(c[tmp]);
while (topfh && sty[topfh] >= k + j) {
stnum[topnum - 1] = cal(stf[topfh], stnum[topnum - 1], stnum[topnum]);
--topnum; --topfh;
}
stf[++topfh] = c[tmp]; sty[topfh] = k + j;
}
++tmp;
} else {
if (c[tmp] == 'a') stnum[++topnum] = a, ++tmp;
else {
k = 0;
for(;c[tmp] >= '0' && c[tmp] <= '9' && tmp <= len; ++tmp)
k = k * 10 + c[tmp] - '0';
stnum[++topnum] = k;
}
}
}
while (topfh) {
stnum[topnum - 1] = cal(stf[topfh], stnum[topnum - 1], stnum[topnum]);
--topnum; --topfh;
}
return stnum[1];
}
int main() {
gets(s);
num = _();
int m;
scanf("%d\n", &m);
for(int i = 0; i < m; ++i) {
gets(s);
now = _();
if (now == num) putchar('A' + i);
}
puts("");
return 0;
}

神奇的hash啊,你的低错误率是多么玄学,你的可靠性那么扑朔迷离~

【Tyvj 1060】【NOIP 2005】等价表达式的更多相关文章

  1. NOIP 2005 等价表达式 (TYVJ P1060)

    做题记录: 2016-08-10 23:35:09 背景 NOIP2005 提高组 第四道 描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代 ...

  2. NOIP 2005 等价表达式 题解

    题意 给一个表达式然后再给n个表达式,判断是否等价 一道大模拟题,将a带为数,并且取模防止溢出 #include<bits/stdc++.h> using namespace std; c ...

  3. noip 2005 等价表达式

    /* 开始想的是 维护a的每个指数的系数 然而不好办 然而还有^10^10^10这种数据 特殊值带入吧 多搞几个素数 接下来就是玄学的事了 给a赋值之后 就是简单地表达式求值 虽然思路简单 但是字符串 ...

  4. 等价表达式 2005年NOIP全国联赛提高组(栈模拟)

    P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...

  5. 数据结构--栈 codevs 1107 等价表达式

    codevs 1107 等价表达式 2005年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Descripti ...

  6. 洛谷P1054 等价表达式

    P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...

  7. 等价表达式(noip2005)

    3.等价表达式 [问题描述]    兵兵班的同学都喜欢数学这一科目,中秋聚会这天,数学课代表给大家出了个有关代数表达式的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也 ...

  8. 洛谷 P1054 等价表达式 解题报告

    P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的 ...

  9. 洛谷 P1054 等价表达式

    洛谷 P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式, ...

随机推荐

  1. GTAC 2015 Schedule

    之前发的GTAC 2015将于11月10号和11号召开 现在时刻表也出来啦 https://developers.google.com/google-test-automation-conferenc ...

  2. 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]

    题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...

  3. wget 怎么下载https的连接错误: Unable to establish SSL connection

    curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.11.tgz?_ga=1.33040702.1440244624.1 ...

  4. php正则表达式治疗结巴

    用正则表达式去解决结巴这个问题可以通过下面进行解决: 解决思路是: 先找到重复的不部分 用str_replace($source,$replace,$str);来进行代理 下面分两种情况,最后将这两种 ...

  5. IO调度器

    由于对blktrace的好奇,来到了block层.通过阅读block层的代码,自己的几个错误认知被纠正,比如 一) 同步操作时,进程是在驱动中睡觉真实情况是:进程在文件系统睡觉 二) 对同一个数据块的 ...

  6. Linux操作系统下三种配置环境变量的方法

    现在使用linux的朋友越来越多了,在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法. 1.修改/etc/profile文件 如果你的计算机仅仅作 ...

  7. tkinter 的两个例子

    第一个例子:after 用于定时操作 import tkinter as tk import time class MyApp(tk.Frame): def __init__(self, msecs= ...

  8. myeclipse中发送邮件出现Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

    出现这个问题的原因是jar包版本不统一,解决方法如下: 我在项目导入了jar包 与myeclipse自带jar冲突了 删除Java EE 5 Libraries/javaee.jar/mail里的包有 ...

  9. Android编译报Errors running builder 'Android Pre Compiler' on project 'XXX' java.lang.NullPointerException

    编译android时,遇到报错:Errors occurred during the build.Errors running builder 'Android Pre Compiler' on pr ...

  10. 中国式IT的项目

    这篇文章用来总结一下2013,同时也分享一下我对中国IT项目现状的一些看法. 我先从项目说起.这里的项目主要是指的软件开发项目.我们分别从项目中的甲方和乙方谈谈,看看这两者对于项目.对应IT的认识和观 ...