博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CCF NOI1098 森林
阅读量:6688 次
发布时间:2019-06-25

本文共 1850 字,大约阅读时间需要 6 分钟。

问题链接


时间限制: 1000 ms  空间限制: 262144 KB

题目描述 

  在很久很久之前,有一个很大很大的森林。森林里共有n棵奇怪的大树,每棵奇怪的大树上有一道数学式子,只有回答正确的运算答案才能开启到下一棵树的道路。

  斌斌在森林里玩了一天很开心,可在傍晚回家的时候,他被这些复杂的计算难倒了,你能帮帮他吗?斌斌一开始在第一棵树,他解答完n道题就可以走出森林了。
  式子的形式以“a (+-/*) b(+-/*) c(+-/*) d……=”的形式给出,严格按照从左到右的顺序计算即可(即乘除与加减同优先级),最后以最简分数的形式输出答案(a/b)(即a与b的最大公因数是1)

输入

  第1行为n。

  第2-n+1行,每行有一个字符串si,表示第i个题目。

输出

  n行,每行一个分数(a/b)的形式。

样例输入

2

5+6/7*3/9=
2+10/5-1=
样例输出

11/21

7/5

数据范围限制

  n<=500,si长度之和<=10000 保证答案分子分母<=10^9

  a,b,c,d<=1

提示

  关于输出格式问题:

  答案为0输出0
  答案为﹣输出-a/b的形式
  答案为+ 输出a/b的形式


问题分析

  这是一个分数四则运算问题

  需要知道分数计算的规则。

  为了约分需要计算最大公约数。

程序说明

  因为运算符没有优先级,计算式子从左到右迭代计算即可。

  数有可能比较大,所以使用long long类型。

要点详解

  • 尽量用函数封装功能函数


参考链接:(略)。

100分通过的程序:

#include 
#include
long long gcd(long long m, long long n){ if(n == 0) return m; else return gcd(n, m % n);}int main(void){ int n, val; long long gcdval, decimal, denominator; char operate; scanf("%d", &n); while(n--) { decimal = 0; denominator = 1; operate = '+'; for(;;) { scanf("%d", &val); if(operate == '+') decimal += val * denominator; else if(operate == '-') decimal -= val * denominator; else if(operate == '*') decimal *= val; else if(operate == '/') denominator *= val; if(decimal == 0) denominator = 1; else { gcdval = gcd(abs(decimal), abs(denominator)); decimal /= gcdval; denominator /= gcdval; } scanf("%c", &operate); if(operate == '=') break; } if(decimal == 0) printf("%lld\n", decimal); else printf("%lld/%lld\n", decimal, denominator); } return 0;}

转载于:https://www.cnblogs.com/tigerisland/p/7563874.html

你可能感兴趣的文章
唐老师答疑
查看>>
第十二章 简单工厂模式(Simple Facotry)
查看>>
LeetCode - 70. 爬楼梯
查看>>
visualVm监控tomcat
查看>>
Jquery script for document preview?
查看>>
【Magedu】Week02
查看>>
写给MongoDB开发者的50条建议Tip12
查看>>
我的友情链接
查看>>
linux下查看nginx,apache,mysql,php编译命令
查看>>
JQUERY学习第三天之浮动和弹出窗口
查看>>
python中asynchat异步socket命令/响应处理
查看>>
动态编译
查看>>
linux下批量解压缩
查看>>
使用xcopy进行日增量备份
查看>>
知之者不如好之者,好之者不如乐之者
查看>>
测试Application.Idle
查看>>
sizeof与strlen的区别与联系
查看>>
Citrix发布支持Framehawk技术的HDX协议,用户体验优势进一步扩大
查看>>
Android各种访问权限Permission详解
查看>>
RHEL5.5安装中文支持
查看>>