HDU - 3347 Calculate the expression

本文介绍了一个简单的程序,用于解析和计算基本的数学表达式。该程序能够处理变量赋值及基本的加减运算,并通过样例展示了其功能。
You may find it’s easy to calculate the expression such as:
a = 3
b = 4
c = 5
a + b + c = ?
Isn’t it?

Input
The first line contains an integer stands for the number of test cases.
Each test case start with an integer n stands for n expressions will follow for this case.
Then n – 1 expressions in the format: [variable name][space][=][space][integer] will follow.
You may suppose the variable name will only contain lowercase letters and the length will not exceed 20, and the integer will between -65536 and 65536.
The last line will contain the expression you need to work out.
In the format: [variable name| integer][space][+|-][space][variable name| integer] …= ?
You may suppose the variable name must have been defined in the n – 1 expression and the integer is also between -65536 and 65536.
You can get more information from the sample.
Output
For each case, output the result of the last expression.
Sample Input

3
4
aa = 1
bb = -1
aa = 2
aa + bb + 11 = ?
1
1 + 1 = ?
1
1 + -1 = ?

Sample Output

12
2
0
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int inf=0x3f3f3f3f;//无穷大
#define PI acos(-1)

int main(){
    int t;
    double l, a, b, l1, l2, ans, c;
    while(scanf("%d", &t) != EOF){
        while(t--){
            scanf("%lf%lf%lf", &l, &a, &b);
            if(a < b)
            {
                int tem;
                tem = b;
                b = a;
                a = tem;
            }
            l1 = sqrt(2) * l;//printf("%.4f  ", l1);
            l2 = l1 / 2;
            c = b / 2;
            if(l1 < c){
                ans = l * l;
                printf("%.4f\n", ans);
            }
            else if(l2 >= c){
                ans = c * c;
                printf("%.4f\n", ans);
            }
            else if(l2 < c && l1 > c){
                ans = l * l - (l1 - c) * (l1 - c);
                printf("%.4f\n", ans);
            }
        }
    }
    return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值