HDU2.1.8 小数化分数2
来源:互联网 发布:gta5画面设置优化 编辑:程序博客网 时间:2024/05/31 04:03
分成三种情况来讨论:
(1)只有普通小数
(2)只有循环小数
(3)前面是普通小数,后面跟着循环小数
把普通小数的位数num和循环小数位数(即为括号中的数字个数)cir_num统计出来
对于情况(1),就是把小数表示的数字除以对应的10的次方,比如0.32对应32/(10^2)
对于情况(2),就是把小数表示的数字除以对应的10的次方减1,比如0.(32)对应32/(10^2-1)
对于情况(3),就是把情况(1)加上1/10``0乘以情况(2),比如0.3(32)对应3/10+1/10*(32/(10^2-1))
代码如下:
#include <cstdio>#include <iostream>#include <cmath>#include <cstring>using namespace std;char fra[20];long long pow10(int n){long long res=1;for(int i=1;i<=n;i++)res*=10;return res;}long long change(int a,int b){long long res=0;for(int i=a;i<=b;i++)res=res*10+(fra[i]-'0');return res;}long long gcd(long long a,long long b){if(a<b){long long t=a;a=b;b=t;}while(b!=0){long long c=a%b;a=b;b=c;}return a;} int main(){int T;scanf("%d",&T);getchar();while(T--){memset(fra,0,sizeof(fra));scanf("%s",fra);int num=0;int cir_num=0;int flag=0;int i,j;for(i=2;fra[i]!=0;i++){if(fra[i]=='('){flag=1;break;}num++;}if(flag){for(j=i+1;fra[j]!=')';j++){cir_num++;}}long long down;long long up;if(num==0){down=pow10(cir_num)-1;up=change(i+1,j-1);}else if(cir_num==0){down=pow10(num);up=change(2,i-1);}else{down=pow10(num)*(pow10(cir_num)-1);up=change(2,i-1)*(pow10(cir_num)-1)+change(i+1,j-1);}long long temp=gcd(down,up);if(temp!=1){down/=temp;up/=temp;}printf("%lld/%lld\n",up,down);}return 0;}
0 0
- HDU2.1.8 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- 小数化分数2
- hdu1717 小数化分数2
- HDU 小数化分数2
- HDU1717 小数化分数2
- HD-小数化分数2
- HDU1717--小数化分数2
- hdu1717 小数化分数2
- HDOJ1717 小数化分数2
- hdu1717小数化分数2
- HADOOP生态系统
- 架构师速成-如何高效编程
- C/C++ 数据范围(int ,char long, float,double)
- java.lang.ClassNotFoundException: com.sun.mail.util.MessageRemovedIOException
- Grand Central Dispatch 基础教程:Part 2/2
- HDU2.1.8 小数化分数2
- undefined reference to ...... @GLIBCXX
- ibatis的queyrForList和queryForMap区别
- B - RGCDQ-HDU 5317-素数筛法
- poj1102+每个数字有七笔画每行扫描+注意细节每个样例后要有两个回车
- mac下显示和隐藏隐藏文件
- DZY Loves Chessboard (周赛2)
- 推荐几个机器学习算法及应用领域相关的中国大牛
- 创业要趁早