博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDOJ】1717 小数化分数2
阅读量:6369 次
发布时间:2019-06-23

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

简单字符串处理。

1 #include 
2 #include
3 #include
4 #include
5 6 #define MAXN 25 7 char str[MAXN]; 8 int ten[15]; 9 10 int gcd(int m, int n) {11 if (m == 0)12 return n;13 if (m > n)14 return gcd(n, m);15 else16 return gcd(m, n%m);17 }18 19 int main() {20 int t, a, b, ka, kb, n, m;21 int i, k;22 bool hascircle;23 24 ten[0] = 1;25 for (i=1; i<15; ++i)26 ten[i] = ten[i-1]*10;27 28 scanf("%d", &t);29 while (t--) {30 scanf("%s", str);31 a = b = 0;32 ka = kb = 0;33 hascircle = false;34 // ignore 0.35 for (i=2; str[i]; ++i) {36 if (str[i] == '(') {37 hascircle = true;38 } else if ( isdigit(str[i]) ) {39 if (hascircle) {40 b = b*10+str[i]-'0';41 kb++;42 } else {43 a = a*10+str[i]-'0';44 ka++;45 }46 }47 }48 // a: integer for not circle part, b: integer for circle part49 // ka: number of bits for a, kb: number of bits for b50 // result = m/n;51 if (kb) {52 n = ten[ka+kb] - ten[ka];53 m = a*ten[kb]+b-a;54 } else {55 n = ten[ka];56 m = a;57 }58 k = gcd(m, n);59 printf("%d/%d\n", m/k, n/k);60 #ifndef ONLINE_JUDGE61 fflush(stdout);62 #endif63 }64 65 return 0;66 }

 

转载于:https://www.cnblogs.com/bombe1013/p/3973859.html

你可能感兴趣的文章
笔记-从源码角度分析alloc与init的底层
查看>>
消除GitHub上的历史记录
查看>>
自学 JAVA 的几点建议
查看>>
第十三天-企业应用架构模式-对象-关系元数据映射模式
查看>>
k8s与HPA--通过 Prometheus adaptor 来自定义监控指标
查看>>
Python 比特币教程之二: 机器人收发比特币
查看>>
虎牙直播在微服务改造方面的实践和总结
查看>>
怎样将优酷网站下载的视频KUX转MP4格式
查看>>
MongoDB 分组统计
查看>>
二进制状态码
查看>>
Vue 中 CSS 动画原理
查看>>
关于 Promise 的 9 个提示
查看>>
算法复习
查看>>
安卓中高级开发面试知识点之——缓存
查看>>
Java的初始化顺序
查看>>
js 判断回文字符串
查看>>
shields小徽章是如何生成的?以及搭建自己的shield服务器
查看>>
猫头鹰的深夜翻译:spring事务管理
查看>>
记一次使用Spring REST Docs + travis + github自动生成API接口文档的操作步骤(下)...
查看>>
1、集合 2、Iterator迭代器 3、增强for循环 4、泛型
查看>>