hdu 2986 Ballot evaluation (模拟)

时间:2023-11-25 17:27:50

题目

上次比赛的题目,好长时间了。

这几天感冒了很难受, 直到现在才整理,

上次比赛的时候,出了各种错误,   ,,,样例都没过,题目读的也很差,今天做的时候,

看了一下网上的,发现一个代码特别简洁,学习了一下。

不过,在hdu交的时候,交c++会编译错误,不知道怎么回事,两次了,G++能过。

题意:给n个字符串和它们代表的值,求下面m个式子是否成立。

字符串对应的值有一位小数, 式子上的值是整数 (比赛的时候根本 没注意这个)

 #include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std; int tran(char s[])
{
int a, b;
sscanf(s, "%d.%d", &a, &b);
a = a*+b;
return a;
}
bool check(int a, int b, char s[])
{
if(strcmp(s, "<")==) return a < b;
if(strcmp(s, ">")==) return a > b;
if(strcmp(s, "<=")==) return a <= b;
if(strcmp(s, ">=")==) return a >= b;
if(strcmp(s, "=")==) return a == b;
return false;
}
int main()
{
int n, m, ca, sum, ans;
char s1[], s2[];
while(cin>>n>>m)
{
map<string, int>mp;
getchar();
while(n--)
{
cin>>s1>>s2;
mp[s1] = tran(s2);
}
for(ca = ; ca <= m; ca++)
{
ans = ; sum = ;
while()
{
scanf("%s", s1);
sum += mp[s1];
scanf("%s", s2);
if(strcmp(s2, "+")!=)
break;
}
cin>>ans;
ans *= ;
printf("Guess #%d was ", ca);
check(sum, ans, s2)?cout<<"correct.":cout<<"incorrect.";
cout<<endl;
}
}
return ;
}