HDU1717(小数化分数,思维数学题)
2017-09-07 18:57
225 查看
orz大佬,循环小数化分数
有限小数很简单,无限小数的化法是利用了无限小数循环的性质,把利用倍数关系去掉无穷部分。
以0.94(375)为例子。
现将他乘100,变为94.(375)。
然后在取他的100000倍,变为94375.(375)
这样两个数小数点后相同,相减后就变为整数了。
以x代表原数;
100000x-100x=94375.(375)-94.(375)=94281
99900x=94281
x=94281/99900
好了这样就做出来了,
剩下的就是基础的字符串操作。
ac code:
有限小数很简单,无限小数的化法是利用了无限小数循环的性质,把利用倍数关系去掉无穷部分。
以0.94(375)为例子。
现将他乘100,变为94.(375)。
然后在取他的100000倍,变为94375.(375)
这样两个数小数点后相同,相减后就变为整数了。
以x代表原数;
100000x-100x=94375.(375)-94.(375)=94281
99900x=94281
x=94281/99900
好了这样就做出来了,
剩下的就是基础的字符串操作。
ac code:
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<iostream> #include<string> #include <set> #include<time.h> //a&3==a%4 using namespace std; #define ll long long #define mem(a) memset(a,0,sizeof(a)) const double eps=1e-8; const int maxn=30010;//须填写 const int inf=0x3f3f3f3f; int tenpow[20]; init() { tenpow[0]=1; for(int i=1;i<20;i++) tenpow[i]=tenpow[i-1]*10; } int gcd(int x,int y) { return y==0?x:gcd(y,x%y); } char num[50]; bool judge() { for(int i=0;i<strlen(num);i++) { if(num[i]=='(') return false; } return true; } int getnum() { int res=0; for(int i=2;i<strlen(num);i++) res=(res*10+(num[i]-'0')); return res; } int uncursearch(int &b) { int res=0; for(int i=2;i<strlen(num);i++) { c202 if(num[i]=='(') { break; } else { b++; res=res*10+(num[i]-'0'); } } return res; } int cursearch(int &b) { int res=0; int i=0; while(i<strlen(num)) { if(num[i]=='('&&num[i]!=')') { while(true) { i++; if(num[i]==')') break; res=res*10+(num[i]-'0'); b++; } } i++; } return res; } int main() { init(); int kase; int fenzi; int fenmu; scanf("%d",&kase); while(kase--) { scanf("%s",num); if(judge()) { fenzi=getnum(); fenmu=tenpow[strlen(num)-2]; } else{ int curdigit=0; int uncurdigit=0; int curnum=cursearch(curdigit); int uncurnum=uncursearch(uncurdigit); fenzi=uncurnum*tenpow[curdigit]+curnum-uncurnum; fenmu=tenpow[curdigit+uncurdigit]-tenpow[uncurdigit]; //printf("%d %d %d %d\n",curdigit,uncurdigit,curnum,uncurnum); } int numgcd=gcd(fenzi,fenmu); fenzi/=numgcd; fenmu/=numgcd; printf("%d/%d\n",fenzi,fenmu); } return 0; }
相关文章推荐
- hdu1717 小数化分数2
- hdu 1717 小数化分数2 (数学)
- HDOJ 题目1717 小数化分数2(数学)
- HDU 1717 小数化分数2(数学基本知识)
- HDU ACM 1717 小数化分数2 [数学题]
- ACM学习历程—HDU1717 小数化分数2(gcd)
- HDU 1717 小数化分数2 数学题
- hdu 1717 小数化分数2(数学)
- HDU 1717 小数化分数2(数学)
- hdu1717 小数化分数2
- HDU1717 小数化分数2
- HDU1717 小数化分数2
- ACMSTEP 2.1.8 小数化分数 2 //数论 数学 没AC
- HDU1717--小数化分数2
- hdu 1717 小数化分数2(数学)
- hdu1717(小数化分数)
- HDU 1717 小数化分数2【数学】
- HDU1717--小数化分数2
- HDOJ1717 小数化分数2(模拟)
- Acdreamoj1115(数学思维称号)