HDU1717(小数化分数,思维数学题)
来源:互联网 发布:杭州 政府网站 建站 编辑:程序博客网 时间:2024/04/30 11:51
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:
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>#include<time.h>//a&3==a%4using 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++) { 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;}
阅读全文
0 0
- HDU1717(小数化分数,思维数学题)
- hdu1717(小数化分数)
- hdu1717小数化分数
- hdu1717 小数化分数2
- HDU1717 小数化分数2
- HDU1717--小数化分数2
- hdu1717 小数化分数2
- hdu1717小数化分数2
- HDU1717小数化分数2
- hdu1717小数化分数2
- hdu1717小数化分数2
- 杭电hdu1717 - 小数化分数2
- HDU1717 (循环小数化分数)
- HDU ACM 1717 小数化分数2 [数学题]
- xtu 1236 Fraction(小数化分数)
- XTU 1236 Fraction(小数化分数)
- 小数化分数
- 小数化分数
- ajax_Get请求
- 刷题知识点汇总(一)
- mysql 优化学习一
- elasticsearch(一) 基础入门级demo
- Kattis
- HDU1717(小数化分数,思维数学题)
- 'str' object has no attribute 'streaming'
- 《Java从入门到放弃》JavaSE入门篇:面向对象语法一(入门版)
- ajax—post请求
- 安装Jenkins时不能联网安装插件问题解决
- windows用mysql命令导入大数据的解决方法(phpmyadmin导入慢的解决办法)
- 【工具】消息队列-kafka安装(windows)
- 类和对象 编程题#2(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)
- Raft一致性算法