B. 这是数学题还是字符串题呢?
来源:互联网 发布:北京市道路网数据下载 编辑:程序博客网 时间:2024/06/08 12:27
B. 这是数学题还是字符串题呢?
众所周知的分数化成小数是如此的easy,那么小数化成分数呢!
已知小数分为不循环小数和循环小数,而循环小数又分为混循环小数和纯循环小数两类。
提示:
1、纯循环小数(类似0.’3’,引号内为循环的数):用9做分母,有多少个循环数就几个9,以此类推。
2、混循环小数(类似0.2’33’,引号内为循环的数):用9和0做分母,首先有一个循环节有几位数字就几个9,接着有几个没加入循环的数就加几个0,再用第二个循环节以前的小数部分组成的数与小数部分中不循环部分组成的数的差做分子,比如0.4’3’,3的循环,有一位数没加入循环,就在9后面加一个0做分母,再用43减4做分子,得 90分之39,0.14’5’,5的循环就用9后面加2个0做分母,再用145减14做分子,得900分之131,0.549,49的循环,就 用99后面加1个0做分母,用549减5做分子,最后得990分之545,以此类推,能约分的要化简。
Input
输入的第一行是一个T,T大约为50组,接下来有T组数据,每组数据占一行,数据为非负且小于1的小数,输入包含”.”,”(“和”)”,括号中是小数无限循环的部分。
这个分母的范围不会超过10^19。
Output
输出它的分数形式,占一行。
Sample Input
3
0.5
0.(3)
0.2(33)
Sample Output
1/2
1/3
7/30
简单模拟
本来题目,有坑叫学长改过了,
#include<iostream>#include<cstdlib>#include<cstring>#include<cmath>#include<cctype>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;#define mm(a,b) memset(a,0,sizeof(a))ll gcd(ll x, ll y){ return x%y == 0 ? y : gcd(y, x%y);}char a[100], b[100], c[100];int main(){ int t; cin >> t; getchar(); while (t--) { mm(a, 0); mm(b, 0); mm(c, 0); ll k1 = 0, k2 = 0; gets(a); int len = strlen(a); //cout << strlen(a) << "&&&&" << endl; if (strlen(a) == 1) { puts("0"); continue; } int flag = 0; for (ll i = 0; i < strlen(a); i++) { if (i >= 2) { if (a[i] >= '0'&&a[i] <= '9') { if (!flag) b[k1++] = a[i]; else c[k2++] = a[i]; } else flag = 1; } } //cout << s1 << "((((" << s2 << endl; if (!flag) { ll s1 = atol(b), s2 = atol(c); ll s3 = pow(10, strlen(a) - 2); //cout << strlen(a)-2 << "&&&&" << endl; //cout << s3 << "UUUU" << endl; ll tt = gcd(s1, s3); // cout << tt; printf("%lld/%lld\n", s1 / tt, s3 / tt); } else { if (a[2] == '(') { ll s2 = pow(10, len - 4) - 1; ll s1 = atol(c); ll tt = gcd(s1, s2); printf("%lld/%lld\n", s1 / tt, s2 / tt); } else { ll s2 = pow(10, len - 4) - pow(10, strlen(b)); ll aa = atol(b); strcat(b, c); ll bb = atol(b); ll s1 = bb - aa; //cout << s1 << "s1" << "s2" << s2 << endl; ll tt = gcd(s1, s2); printf("%lld/%lld\n", s1 / tt, s2 / tt); } } } return 0;}
阅读全文
0 0
- B. 这是数学题还是字符串题呢?
- Java是咖啡还是海洋呢?
- 是SqlDataReader还是dataset比较快速呢
- 你是喜欢strcpy还是strncpy呢?
- 阅读是该精还是泛呢?
- 是去工作呢,还是去培训呢,还是专于毕业设计呢?
- √2 + √3 ≈ 3.14,这是巧合么?还是有其他意义呢?
- 这是为什么呢?
- 这是干嘛呢?
- 这是为什么呢?
- 这是为什么呢?
- 这是为什么呢?
- 这是为什么呢?
- 这是为什么呢??
- 这是为什么呢?
- 这样的工作是“去”还是留呢?
- 到底是测试好呢还是开发好了?
- 你是聪明的人还是智慧的人呢?
- 云打印服务器
- Cygwin 命令行包管理
- window对象
- 继承(五)
- MySQL Internals Manual翻译
- B. 这是数学题还是字符串题呢?
- 数据压缩 JPEG解码
- 面试热题——任意进制(32进制及以下)之间的转换
- 卸载vs2013(踩坑)
- jdk, python2&3切换
- Spring MVC Controller的线程安全
- SSM(spring-springmvc-mybatis)整合开发xml配置文件内容springmvc-config.xml,application.xml,web.xml
- Qt事件与常用事件处理、过滤
- Java内存泄露的理解与解决