博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 2.4 Fractions to Decimals
阅读量:4359 次
发布时间:2019-06-07

本文共 1311 字,大约阅读时间需要 4 分钟。

mark:题意很简单。。。输出小数形式,要标记循环节。不难就是写起来挺麻烦,开辟一个数组来标记余数是否出现过可以找到循环节。而且要记录循环节起始出现的位置。写的比较恶心。还有76个字符一行,要注意换行。最长的是1/9991,循环周期是1632位。。。代码写的比较恶心。。。

代码:

# include 
# include
int vis[1000010], ans[1000010] ;char str[1000000] ;int main (){ int cnt, cc, n, d, i; freopen ("fracdec.in", "r", stdin) ; freopen ("fracdec.out", "w", stdout) ; while (~scanf ("%d%d", &n, &d)) { memset (vis, 0, sizeof(vis)) ; cnt = 0 ; cnt = sprintf (str, "%d.", n/d) ; n = (n%d)*10 ; if (n == 0) cnt = cnt+sprintf (str+cnt, "0") ; for (cc = 1 ; n && !vis[n]; cc++, n=(n%d)*10) vis[n]=cc, ans[cc]=n/d ; if (n==0) for (i = 1 ; i < cc ; i++) cnt = cnt + sprintf (str+cnt, "%d", ans[i]) ; else { for (i = 1 ; i < vis[n] ; i++) cnt = cnt + sprintf (str+cnt, "%d", ans[i]) ; cnt = cnt + sprintf (str+cnt, "(") ; for (i = vis[n] ; i < cc ; i++) cnt = cnt + sprintf (str+cnt, "%d", ans[i]) ; cnt = cnt + sprintf (str+cnt, ")") ; } for (i = 0 ; str[i] ; i++){ if (i != 0 && i % 76 == 0) printf ("\n") ; printf ("%c", str[i]) ; } printf ("\n") ; } return 0 ;}

 

转载于:https://www.cnblogs.com/lzsz1212/p/3170777.html

你可能感兴趣的文章
12款很酷的使用大头照的国外名片设计作品
查看>>
Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】
查看>>
数据分析的一些误区
查看>>
C语言函数及变量的声明与定义的区别
查看>>
css 把图片变成灰色
查看>>
转-spring boot web相关配置
查看>>
语言基础(1):C++发展历史
查看>>
鼠标滚轮事件
查看>>
Python中type和object
查看>>
linux-nohup命令
查看>>
FetchAPI 的使用
查看>>
WPF框架MVVM简单例子
查看>>
bzoj 1996: [Hnoi2010]chorus 合唱队
查看>>
PHP加文字水印时报错 imagettftext() [function.imagettftext]: any2eucjp()
查看>>
c# 7.0 6.0 新语法
查看>>
[LeetCode OJ] Roman to Integer
查看>>
VIM vim/vi的文件内、跨文件复制粘贴操作、替换操作
查看>>
彻底解决eslint与webstorm针对vue的script标签缩进处理方式冲突问题
查看>>
默然回首繁忙而充实的2016
查看>>
浅谈this关键字
查看>>