上次比赛的题目,好长时间了。
这几天感冒了很难受, 直到现在才整理,
上次比赛的时候,出了各种错误, ,,,样例都没过,题目读的也很差,今天做的时候,
看了一下网上的,发现一个代码特别简洁,学习了一下。
不过,在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 ;
}