洛谷P1530 分数化小数 Fractions to Decimals
P1530 分数化小数 Fractions to Decimals
- 103通过
- 348提交
- 题目提供者该用户不存在
- 标签USACO
- 难度普及/提高-
提交 讨论 题解
最新讨论
- 暂时没有讨论
题目描述
写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式。 如果小数有循环节的话,把循环节放在一对圆括号中。
例如, 1/3 =0.33333333写成0.(3), 41/333 = 0.123123123...写成0.(123), 用xxx.0 等表示整数。 典型的转化例子:
1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)
PROGRAM NAME fracdec
输入输出格式
输入格式:
单独的一行包括被空格分开的N和D(1 <= N,D <= 100000)。
输出格式:
按照上面规则计算出的小数表达式.如果结果长度大于76,每行输出76个字符.
输入输出样例
45 56
0.803(571428)
说明
翻译来自NOCOW
USACO 2.4
分析:看着和数学有关,其实是一道大模拟......细节非常多:
1.因为要76行一输出,所以要先用一个变量记录长度,小数点也要加上去.
2.如果能够除尽,直接输出答案即可.
3.对于整数部分的长度,不断除以10,直到等于0,每次除的时候累加长度.
4.如果除以10恰好等于0,那么长度+1.
然后就是小数部分的处理了,难点是循环节的处理,如果一个余数之前恰好出现过,而当前的除数正好是之前余数对应的除数,那么就出现循环节,这里用两个数组记录,一个记录上一个相同余数位置,一个记录除数.
最后输出的时候判断累加的长度是否为76,是则换行即可.
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std;
int n,d,a[],check[],tot1 = ,tot,ans[],cur[],h[],integer[],remainder[],flag,l,r; int main()
{
scanf("%d%d",&n,&d);
if (n % d == )
{
printf("%d.0\n",n/d);
return ;
}
printf("%d.",n/d);
int temp = n / d;
while (temp)
{
tot1++;
temp /= ;
}
if (n / d == )
tot1++;
remainder[] = n % d;
while ()
{
tot++;
integer[tot] = remainder[tot - ] * / d;
remainder[tot] = remainder[tot - ] * % d;
if (remainder[tot] == )
break;
if (cur[remainder[tot]] > && h[cur[remainder[tot]]] == integer[tot])
{
l = cur[remainder[tot]];
r = tot - ;
break;
}
cur[remainder[tot]] = tot;
h[cur[remainder[tot]]] = integer[tot];
}
for (int i = ; i <= tot; i++)
{
if (i == l)
{
printf("(");
tot1++;
}
printf("%d",integer[i]);
tot1++;
if (i == r)
{
printf(")");
break;
}
if (tot1 % == )
printf("\n");
}
printf("\n"); return ;
}
洛谷P1530 分数化小数 Fractions to Decimals的更多相关文章
- Luogu P1530 分数化小数 Fractions to Decimals(模拟)
P1530 分数化小数 Fractions to Decimals 题意 题目描述 写一个程序,输入一个形如\(N/D\)的分数(\(N\)是分子,\(D\)是分母),输出它的小数形式.如果小数有循环 ...
- YTU 1439: 2.4.5 Fractions to Decimals 分数化小数
1439: 2.4.5 Fractions to Decimals 分数化小数 时间限制: 1 Sec 内存限制: 64 MB 提交: 194 解决: 13 题目描述 写一个程序,输入一个形如N/ ...
- [C++]2-5 分数化小数
/* 分数化小数 输入正整数a,b,c,输出a/b的小数形式.精确到小数点后C位.a,b<=10^6,c<=10^6. 输入包含多组数据,结束标记为a=b=c=0 样例输入: 1 6 4 ...
- 分数化小数(decimal)
分数化小数 ①我的程序 #include<iostream>using namespace std;int main(void){ int a,b,c,kase=0; while(scan ...
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...
- 【USACO 2.4.5】分数化小数
[描述] 写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式. 如果小数有循环节的话,把循环节放在一对圆括号中. 例如, 1/3 =0.33333333 写成0.(3), 4 ...
- 【u237】分数化小数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式.如果小数有循环节的话,把 ...
- 一个洛谷Material化的Stylish美化主题
Luogu Argon Design 新主题 Luogu Argon Design 目前已经取代了 Luogu Material,但这并不代表 Luogu Material 会停止更新,在 Luogu ...
- 分数规划模板(洛谷P4377 [USACO18OPEN]Talent Show)(分数规划,二分答案,背包)
分数规划是这样一个东西: 给定若干元素,每个元素有两个属性值\(a_i,b_i\),在满足题目要求的某些限制下选择若干元素并求出\(\frac{\sum a}{\sum b}\)的最大值. 如果没有限 ...
随机推荐
- 一. JVM发展史,运行时数据区域,四大引用
一.JVM的出现 JVM将字节码解释成不同os下的机器指令,有了jvm,java语言在不同平台上运行时不需要重新编译 虚拟机发展史 (1)Sun Classic classic jvm要么采用纯解释器 ...
- [jQuery]attr和prop的区别
转自:http://www.cnblogs.com/Showshare/p/different-between-attr-and-prop.html 在高版本的jquery引入prop方法后,什么时候 ...
- ADF_Starting系列5_使用ADF开发富Web应用程序之维护User Interface(Part2)
2014-05-05 Created By BaoXinjian
- jquery 源码剖析1
()(); 闭包,让声明的变量变成局部变量,使外部无法访问,防止和其他代码冲突,互不影响. (function(){ })(); 和一般执行方法一样的. jQuery=f ...
- laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块
Laravel 框架通过 public/.htaccess 文件来让网址不需要 index.php.如果你的服务器是使用 Apache,请确认是否有开启 mod_rewrite 模块.如果 Larav ...
- ubuntu 安装compiz后 黑屏无法进入处理
因为我们显卡的原因而出现不兼容,设置之后会出现菜单栏消失.窗口假死等现象,请保持平静心态,默默重启,如果发现进不去桌面了,可以试试Ctrl+Alt+F1进入字符界面,输入以下命令: dconf res ...
- rails4.2.6配置发送邮件
调试了很久,最后终于可以发送了 1 在config/environments/development.rb文件里配置邮件信息 config.action_mailer.raise_delivery_e ...
- javascript自执行匿名函数
1)自执行匿名函数: 常见格式:(function() { /* code */ })(); 2)作用: function中的code代码在解释时就已经在运行了.因此可以用它创建命名空间, ...
- Html5中的跨页面消息传输
1.如果要接受从其他的窗口那里发过来的消息,就必须对窗口对象的message事件进行监控. window.addEventListener("message",function() ...
- C++primer 练习13.36
#pragma once #include<string> #include<set> using namespace std; class Message { friend ...