hdu 1717 --小数化分数2
来源:互联网 发布:icmp端口号是多少 编辑:程序博客网 时间:2024/04/23 19:56
1.有限循环小数化成分数
例1:
0.5
0.5*10=5;
0.5 = 5/10 = 1/2;
例2:
0.3275
0.3275 * 10000 = 3275
0.3275 = 3275/10000 = 131/400 ;
2.无限循环小数化分数
例1:
0.(4)
0.(4) * 10 = 4.(4) ①
0.(4) * 1 = 0.(4) ②
① - ② = 0.(4) * 9 = 4;
0.(4) = 4/9 ;
例2:
0.32(692307)
0.32(692307) * 10^8 = 32692307.(692307) ①
0.32(692307) * 100 = 32.(692307) ②
① - ② = 0.32(692307) *(10^8 - 10^2 ) = 32692307 - 32
0.32(692307) = (32692307 - 32) / (10^8 - 10^2 ) ;
3.无限不循环小数无法化成分数
CODE:
#include<iostream>using namespace std;int gcd( int a, int b){while(b) { a %= b; a ^= b; b ^=a; a ^=b; }return a;}int base[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};int main(){int t,i;scanf("%d",&t);char str[20];while(t--){scanf("%s",str);int len=strlen(str);len-=2;for(i=0;i<len;i++)str[i]=str[i+2];str[len]=0;int sum=0,k=0,ans,sum2=0;bool judge=true;for(i=0;i<len;i++){if(str[i]=='('){k=i;judge=false;}if(str[i]>='0'&&str[i]<='9'){sum = sum*10+str[i]-'0';if(judge)sum2=sum2*10+str[i]-'0';}}if(!judge){ans =base[len-2]-base[k];sum-=sum2;}elseans=base[len];int r = gcd(sum,ans);printf("%d/%d\n",sum/r,ans/r);}return 0;}
- hdu 1717 小数化分数2
- hdu 1717 --小数化分数2
- hdu 1717小数化分数2
- hdu 1717小数化分数2
- HDU 1717 - 小数化分数2
- HDU 1717 小数化分数2
- hdu 1717 小数化分数2
- hdu 1717 --小数化分数2
- HDU 1717 小数化分数2
- hdu 1717 小数化分数2
- hdu 1717 小数化分数2
- Hdu 1717 小数化分数2
- HDU 1717 小数化分数2
- HDU 1717 小数化分数2
- HDU 1717 小数化分数2
- HDU 1717 小数化分数2
- hdu---1717小数化分数2
- hdu 1717 小数化分数2
- 用了这么长时间iBus,居然不知道……
- VirtualBox下Ubuntu与Windows XP共享目录
- 多线程临界区的使用
- 虚函数的调用
- Android 音乐播放器
- hdu 1717 --小数化分数2
- fckeditor新的突破方法
- 项目从jdk1.4迁移到jdk1.6
- Libevent参考手册第七章:Evbuffers用于缓冲IO的实用工具
- android 常用代码
- android 常用代码
- android 常用代码
- android 常用代码
- C++基类,派生类,同名覆盖原则