NYOJ 330 一个简单的数学题
2014-07-16 10:37
211 查看
一个简单的数学题
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述zyc最近迷上了数学,一天,dj想出了一道数学题来难住他。算出1/n,但zyc一时答不上来希望大家能编程帮助他。
输入第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).
输出输出1/n. (是循环小数的,只输出第一个循环节).
样例输入
4 2 3 7 168
样例输出
0.5 0.3 0.142857 0.005952380
直接模拟求余数的方法,用一个数组记录商,另外一个数组记录余数是否出现过,如果出现过,说明是第二次循环的开始,在此处跳出循环即可。
#include<cstdio> #include<cstring> const int MAXN = 100005; int a[MAXN], vis[MAXN]; int main() { int n, t, i; scanf("%d",&t); while(t--) { memset(vis, 0, sizeof(vis)); scanf("%d",&n); if(n < 0) { printf("-"); n = -n; } if(n == 1) printf("1\n"); else { int s = 1, num = 0; vis[s] = 1; while(1) { s *= 10; a[num++] = s / n; s %= n; if(vis[s] || s == 0) break; //余数再次出现或者余数为0(即可以整除) vis[s] = 1; } printf("0."); for(i = 0; i < num; i++) printf("%d", a[i]); printf("\n"); } } return 0; }
相关文章推荐
- NYOJ 330 一个简单的数学题【数学题】
- nyoj 330 一个简单的数学题
- nyoj 330 一个简单的数学题
- NYOJ 330 一个简单的数学
- NYOJ 330 一个简单的数学题【数学题】
- 停止标记NYOJ 一个简单的数学题 南工330停止标记
- 数论——nyoj_330, xyoj1984一个简单的数学题
- NYOJ 330 一个简单的数学题
- NYOJ-330 一个简单的数学题
- 一个就简单的数学题 NYOJ 330
- nyoj-330-一个简单的数学题
- NYOJ 330 一个简单的数学题【思维】
- NYOJ 330 一个简单的数学题
- nyoj 一个简单的数学题
- nyoj1110 一个简单数学题
- NYOJ 一个简单的数学题
- NYOJ 一个简单的数学题 南工330
- 一个简单的数学题
- 数学之美——组合小事(今天看到的一个简单的组合学应用,但是觉得挺有意思的)
- NYOJ 题目330一个简单的数学题(数学)