题目链接:http://acm.cug.edu.cn/JudgeOnline/contest.php?cid=1047

.

.

.

I 题目链接:http://acm.cug.edu.cn/JudgeOnline/problem.php?cid=1047&pid=8

题意:给你一个0.xxx...表示的无限循环小数,求其表示成分数形式时分母最小的那个分式。

思路:首先我们要知道如何将一个无限循环小数(已知循环结)化为分数,剩下的过程就是枚举所有循环结来寻找满足题目要求的答案。

下面来推导下如何将一个无限循环小数化为分数:

X = 0.a1a2…an(b1b2…bm)                 (1)

X *10^n = a1a2…an. (b1b2…bm)             (2)

X *10^n - a1a2…an = 0. (b1b2…bm)            (3)

(X *10^n - a1a2…an)*10^m = b1b2…bm. (b1b2…bm)     (4)

(X *10n - a1a2…an)*10^m - b1b2…bm = 0. (b1b2…bm)  (5)

(3)和(5)相等,联立解得:

    X = (a1a2...anb1b2...bm - a1a2...an)/(10^(n+m) - 10^n)   (*)

求出了(*)题目就基本做出来了。

**  使用%[]格式可以输入一个字符集,scanf(" 0.%[0-9]...")格式可以输入前面是0.开头后面是...结尾,中间是由0-9内范围的数字字符组成。

关于更多的字符串输入格式可以参见以前的博文C/C++中字符串的输入问题

** atio函数的介绍

头文件:#include <stdlib.h>

函数原型:int atoi( const char *str );

函数功能:将字符串str转换成一个整数并返回结果。参数str 以数字开头,当函数从str 中读到非数字字符则结束转换并将结果返回。

返回值:字符串的整数表示形式

code:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
const int MAXN = ;
typedef long long LL;
char str[MAXN];
char ups[MAXN];
char dws[MAXN]; LL gcd(LL a, LL b)
{
return !b ? a : gcd(b, a % b);
} int main()
{
while (scanf(" 0.%[0-9]...", str) == )
{
int len = strlen(str);
if (str[] == '' && len == ) break;
LL ansu, ansd; // 分别存储分子和分母
ansd = ;
for (int i = ; i < len; ++i)
{
strncpy(ups, str, i); // 拷贝前i个字符到ups作为非循环部分
ups[i] = ; // 添加字符串结束符
strcpy(dws, str + i); // 从第i个字符开始拷贝给dws(包括字符串结束符),作为循环部分
int lu = strlen(ups);
int ld = strlen(dws);
LL up = atoi(ups) * (pow(, ld) - ) + atoi(dws); // 计算分子(atoi函数将字符串转换成一个整数并返回结果)
LL down = pow(, lu + ld) - pow(, lu); // 计算分子
LL d = gcd(down, up); // 计算最大公约数,分子分母约分
up /= d;
down /= d;
if (down < ansd) // 更新分子和分母
{
ansu = up;
ansd = down;
}
}
printf("%lld/%lld\n", ansu, ansd); // 输出分母最小的结果
}
return ;
}

CUG 数学进阶的更多相关文章

  1. MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)

    # 进阶4 SQL常见函数 分类: 1/单行函数: 字符函数: concat(),length(),ifnull(__,default) ,instr(), trim(),upper(),lower( ...

  2. 「【算法进阶0x30】数学知识A」作业简洁总结

    t1-Prime Distance 素数距离 大范围筛素数. t2-阶乘分解 欧拉筛素数后,按照蓝皮上的式子筛出素数. 复杂度:O(nlogn) t3-反素数ant 搜索 t4-余数之和 整除分块+容 ...

  3. 3D数学读书笔记——矩阵进阶

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhurui_idea/article/details/25242725 最终要学习矩阵 ...

  4. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  5. ACM进阶计划

    ACM进阶计划ACM队不是为了一场比赛而存在的,为的是队员的整体提高.大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l ...

  6. OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)

    实验平台:win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体,类似于OGRE中的“OgreBites::CameraStyle: ...

  7. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

  8. [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门

    [.net 面向对象程序设计进阶] (2) 正则表达式 (一) 快速入门 1. 什么是正则表达式? 1.1 正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简 ...

  9. 在数学建模中学MATLAB

    为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137 ...

随机推荐

  1. 练习一下linux中的list函数。

    所有的list函数见 include/linux/list.h 自己从 include/linux/list.h 拷贝了一些函数到自己的list.c中, 然后练习了一下. 没有别的目的,就是想熟练一下 ...

  2. jquery prop()方法 解决全选 不全选 反选 问题 解决执行一次不不能再执行问题

    //1.如果通过prop()函数更改<input>和<button>元素的type属性,在多数浏览器上将会抛出一个错误,因为该属性一般不允许在后期更改.//如果使用prop() ...

  3. HTML系列(九):表单

    一.表单标签form 表单标签用于申明表单,定义采集数据的范围,即<form>包含的数据将被提交到数据库上,包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单能够包 ...

  4. android入门——UI(3)

    Spinner控件   ListView控件 一.Spinner控件 点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner选择一个新值. 有两种指定数据源的 ...

  5. ubuntu14.04+xfce下启用fcitx,使用中文输入法

    1. 安装fcitx  sudo apt-get install fcitx-pinyin 2.启用fcitx 打开 setting -> Language Support -> Lang ...

  6. Unity3D嵌入WPF教程

    Unity3D嵌入WPF教程 创建一个 类库工程 添加 WindowForm 用户控件 (UserControl) 1).引入 UntiyWebPlayer COM 组件 在工具->选择工具箱中 ...

  7. java——HashCode和equal方法

    equals()反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值. 而hashCode()是对象或变量通过哈希算法计算出的哈希值. 之所以有hashCode方 ...

  8. iOS 开源库

    youtube下载神器:https://github.com/rg3/youtube-dl我擦咧 vim插件:https://github.com/Valloric/YouCompleteMevim插 ...

  9. 转: Promises与Javascript异步编程

    在如今都追求用户体验的时代,Ajax应用真的是无所不在.加上这些年浏览器技术.HTML5以及CSS3等的发展,越来越多的富Web应用出现:在给与我们良好体验的同时,Web开发人员在背后需要处理越来越多 ...

  10. 57. Spring 自定义properties升级篇【从零开始学Spring Boot】

    之前在两篇文章中都有简单介绍或者提到过 自定义属性的用法: 25.Spring Boot使用自定义的properties[从零开始学Spring Boot] 51. spring boot属性文件之多 ...