HDU解题报告——1717
来源:互联网 发布:java系统设计文档 编辑:程序博客网 时间:2024/05/18 00:43
颇为闹心的一道题,首先是一些关于循环小数化分数的知识,假设循环部分有n位,从小数点后第m位开始,则化为分数就是循环部分/(n个9*10^(m-1)),(假设循环前都是0),那么这一题就是构造出来循环和非循环部分约分相加就好了,另外调用scanf()和printf()函数的时候要用%_I64d,顺道给个WA的数据:0.0(1),答案应该是1/90,代码如下:
#include <iostream>#include <cstring>#include <cmath>#include <cstdio>using namespace std;long long gcd(long long a,long long b){long long r=1;while(r){r=a%b;a=b;b=r;}return a;}long long lcm(long long a,long long b){return a/gcd(a,b)*b;}int main(){int t;cin>>t;while(t--){char num[100]={0};cin>>num;bool mark=false;int sizex=0,sizenx=0;long long x=0,nx=0;for(int i=2;num[i]!='\0';i++){if(num[i]=='(') {num[strlen(num)-1]='\0';mark=true;continue;}if(!mark){sizenx++;nx=nx*10+num[i]-'0';}else{sizex++;x=x*10+num[i]-'0';}}long long fmx,fmnx,fm=0,fz=0,kx,knx;if(sizex==0){fmnx=(long long)pow(double(10),sizenx);printf("%I64d/%I64d\n",nx/gcd(nx,fmnx),fmnx/gcd(nx,fmnx));}else if(sizenx==0){fmx=0;for(int i=0;i<sizex;i++) fmx=fmx*10+9;printf("%I64d/%I64d\n",x/gcd(x,fmx),fmx/gcd(x,fmx));}else if(nx==0){fmx=0;for(int i=0;i<sizex;i++) fmx=fmx*10+9;for(int i=0;i<sizenx;i++) fmx*=10;printf("%I64d/%I64d\n",x/gcd(x,fmx),fmx/gcd(x,fmx));}else{fmx=0;fmnx=1;for(int i=0;i<sizex;i++) fmx=fmx*10+9;for(int i=0;i<sizenx;i++) {fmx*=10;fmnx*=10;}kx=gcd(fmx,x);knx=gcd(fmnx,nx);fmx/=kx;x/=kx;fmnx/=knx;nx/=knx;fm=lcm(fmnx,fmx);fz=fm/fmnx*nx+fm/fmx*x;printf("%I64d/%I64d\n",fz/gcd(fz,fm),fm/gcd(fz,fm));}}return 0;}
0 0
- HDU解题报告——1717
- HDU解题报告——1012
- HDU解题报告——1008
- HDU解题报告——1009
- HDU解题报告——1014
- HDU解题报告——1018
- HDU解题报告——1019
- HDU解题报告——1021
- HDU解题报告——1027
- HDU解题报告——1030
- HDU解题报告——1032
- HDU解题报告——1038
- HDU解题报告——1041
- HDU解题报告——1046
- HDU解题报告——1050
- HDU解题报告——1236
- HDU解题报告——2673
- HDU解题报告——1106
- Cocos2d-x 3.0 回调函数的变化 .
- 第六届华为创新杯编程大赛-进阶1第3轮
- ios 配置颜色
- samba 文件和文件夹权限控制
- NOIP提高组 1999 & 2000 题解合集
- HDU解题报告——1717
- Effective C++:条款52 写了placement new也要写placement delete
- [leetcode]Edit Distance
- POJ Goldbach's Conjecture
- 当然了,两岸关系也不可能是一帆风顺的
- Linux Shell脚本应用——使用if判断结构
- ACM从弱到强的进步
- 中文分词--最少单词数
- 关于activity元素的 android.intent.action.MAIN 和 android.intent.category.LAUNCHER