紫书 p59 习题3-8
2016-03-01 21:53
295 查看
循环的地方就是余数重复出现的地方,这个不难想。用数组记录余数是否出现过。。出现一次就加1,这种方法以前见过的。。,就是电话号码那道题,但是一开始还是只想到记录下来每次的余数然后用循环来找这个余数有没有出现过,看了别人思路的提示才知道。。用数组这种思路不是很难想,以前也用这种方法做过,只是第一次是担心数组开太大才没用==恩。。以后注意就是
这道题之后才知道为什么分数一定是有理数。。。。以前都没想过这个问题==只要余数和前面的某个重复了就会循环,而余数必然小于除数,所以肯定会在有限个小数的地方循环
参考过思路的解题报告(http://blog.csdn.net/mobius_strip/article/details/39870555),后来写完之后顺便看看这个题解的代码发现可以不用struct直接用数组就好。。不过感觉也差不多
以后要记录做每道题的时间了。。不然实在做的太慢了==开学以后感觉一下就没时间了。。。只能挤时间。。
这道题之后才知道为什么分数一定是有理数。。。。以前都没想过这个问题==只要余数和前面的某个重复了就会循环,而余数必然小于除数,所以肯定会在有限个小数的地方循环
参考过思路的解题报告(http://blog.csdn.net/mobius_strip/article/details/39870555),后来写完之后顺便看看这个题解的代码发现可以不用struct直接用数组就好。。不过感觉也差不多
#include <iostream> #include <cstdio> #include <cstring> using namespace std; struct record { int num,pos; }tmp[3001]; int main() { int a,b,r[3001],last,first,i,a1; while(scanf("%d%d",&a,&b)!=EOF) { a1=a; first=1; memset(tmp,0,sizeof(tmp)); for(i=0;i<b;i++) { r[i]=a/b; if(tmp[a%b].num!=0){last=i;first=tmp[a%b].pos;break;} tmp[a%b].num++; tmp[a%b].pos=i+1; a=(a%b)*10; //cout<<b<<endl; } printf("%d/%d = %d.",a1,b,r[0]); for(i=1;i<first;i++)printf("%d",r[i]); printf("("); if(last<51) { for(i=first;i<=last;i++)printf("%d",r[i]); } else { for(i=first;i<51;i++)printf("%d",r[i]); printf("..."); } printf(")\n %d = number of digits in repeating cycle\n\n",last-first+1); } return 0; }
以后要记录做每道题的时间了。。不然实在做的太慢了==开学以后感觉一下就没时间了。。。只能挤时间。。
相关文章推荐
- 爬虫学习:一个管用的贴吧妹子图下载器
- Codeforces 633D Fibonacci-ish(暴力)
- MongoDB的安装(Linux平台)
- 2.OC蓝牙功能
- ping命令中请求超时是什么意思?
- 大脑记忆系统研究取得重大进展:或被用于开发新的芯片和操作系统
- 大脑记忆系统研究取得重大进展:或被用于开发新的芯片和操作系统
- Android第一周实习笔记
- nodejs 自动重启服务 supervisor
- MVC4 AspNet MVC下的Ajax / 使用JQuery做相关的Ajax请求
- 大脑记忆系统研究取得重大进展:或被用于开发新的芯片和操作系统
- Chapter 6、字符串(二)(1st,Mar.)
- 解决:ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad o
- Cocos2d-x之CC_CALLBACK详解
- android 线程优先级设置方法
- 高富帅
- 自定义View之TitleBar
- 异常java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
- JavaScript高级程序设计(第3版)第八章读书笔记
- 合并两个有序数组(未整理)