HDOJ 1296:Polynomial Problem 关键在于处理字符串
来源:互联网 发布:linux 服务器宕机日志 编辑:程序博客网 时间:2024/05/02 10:48
这道题的URL:http://acm.hdu.edu.cn/showproblem.php?pid=1296
题目的意思是,给出一个多项式和自变量的值,求出多项式的值。
核心解题思路是每处理出多项式的一个项,便计算出该项的值,并加入最终结果中。但这道题目的边界条件不少,尤其是系数和指数都是默认的情况,处理起来需要些技巧。
这里给一个不好处理的边界条件:
input:
2
X
output:
2
下面是我的AC代码,和大家分享一下。
#include<iostream>#include<string.h>#include<stdio.h>using namespace std;//高效求幂的运算方法int power(int a, int n){int r = 1;int t = a;for(; n; n >>= 1){if(n & 1) r *= t;t *= t;}return r;}int main(){char exp[10000];int x, a, n, r;bool positive; //标志当前处理的数是整数还是负数bool isCoefficient; //标志当前处理的是系数还是指数while(cin >> x){cin >> exp;positive = true;isCoefficient = true;a = n = 0;r = 0;int len = strlen(exp);//系数默认为1的情况if(exp[0] == 'X'){a = 1;isCoefficient = false;}else a = 0;for(int i=0; i<=len; i++){if(exp[i] <= '9' && exp[i] >= '0'){if(isCoefficient){a = a * 10 + exp[i] - '0';}else{n = n * 10 + exp[i] - '0';}}else if(exp[i] == 'X'){//指数为1的情况,即默认情况if(exp[i+1] == '-' || exp[i+1] == '+' || exp[i+1] == '\0') {n = 1;isCoefficient = true;}}else if(exp[i] == '-' || exp[i] == '+') //可以求解前面出现的一个完整的项了{if(!positive) a = -a;if(exp[i] == '-')positive = false;else positive = true;r = r + a * power(x, n);a = n = 0;isCoefficient = true;if(exp[i+1] == 'X') a = 1; //系数默认为1的情况}else if(exp[i] == '^'){isCoefficient = false;}else //'\0'{if(!positive) a = -a;r = r + a * power(x, n);a = n = 0;}}printf("%d\n", r);}system("pause");return 0;}
- HDOJ 1296:Polynomial Problem 关键在于处理字符串
- 【模拟题、表达式求值】hdu hdoj 1296 Polynomial Problem
- hdoj.1296 Polynomial Problem【水题】 2015/08/10
- hdu-1296-Polynomial Problem
- Polynomial Problem(hdu 1296 表达式求值)
- hdu Polynomial Problem
- Polynomial Problem( HDU
- Pseudo-polynomial Partition Problem
- hdoj-3000-字符串处理
- HDOJ 1048字符串处理
- 【FZU 2215】Simple Polynomial Problem
- HDOJ 1004 字符串处理(字符串统计)
- UVa Problem Solution: 10105 - Polynomial Coefficients
- HDu1296(Polynomial Problem)多项式的求解
- Polynomial
- Polynomial
- HDOJ 1106 排序 (字符串处理)
- 字符串处理 HDOJ Quicksum
- Android组件4
- 为什么我觉得MySQL就是一个玩具
- 开放架构才是未来——大数据解决方案背后
- 文本分类和聚类有什么区别
- net_device 结构分析
- HDOJ 1296:Polynomial Problem 关键在于处理字符串
- Flex 图片特效 模糊 放大 跳起
- 当友元类遇到了继承
- 解解request乱码问题
- 新手
- 长稳测试, 在对应目录下生成core文件
- Visual Studio .NET 下的受管 C++
- mysql命令行操作
- Linux下Socket相关头文件总结