一个简单的数学题
来源:互联网 发布:斗鱼手游直播软件 编辑:程序博客网 时间:2024/04/28 15:04
一个简单的数学题
时间限制:3 Sec 内存限制:64 MiB special judge:No
题目描述
zyc最近迷上了数学,一天,dj想出了一道数学题来难住他。算出1/n,但zyc一时答不上来希望大家能编程帮助他。
输入
第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).
输出
输出1/n. (是循环小数的,只输出第一个循环节).
样例输入
复制
4237168
样例输出
复制
0.50.30.1428570.005952380
1/n的小数部分循环特征:
源于此网址:https://www.zybang.com/question/9eb1d3aa58400e172a37b1074d0c8c79.html
证明:任意自然数N在1/N后 得到有限小数 或者是无限循环小数且循环字节数小于N-1
例如:1/11=0.09090909. 循环部分是09,是2个字节,2小于11;
1/7=0.142857142857142857. 循环部分是142857,6位 小于7;
证明无论何时,1除以N这个循环字节总是小于N
代码
#include<stdio.h>
#include<string.h>
#define Max 100011 //如果直接将a【Max】换成a【100011】,则会导致“运行时错误”。
int a[Max];
#include<string.h>
#define Max 100011 //如果直接将a【Max】换成a【100011】,则会导致“运行时错误”。
int a[Max];
int main()
{
int m;
scanf("%d",&m);
while(m--)
{
memset(a,0,sizeof(a));
int n,t=1;
scanf("%d",&n);
if(n==1||n==-1)
printf("%d\n",n);
else
{
if(n<0)
{
n=-n;
printf("-");
}printf("0.");
while(t&&a[t]!=1) //判断 循环
{
a[t]=1;
t*=10;
printf("%d",t/n);
t%=n;
}printf("\n");
}
{
int m;
scanf("%d",&m);
while(m--)
{
memset(a,0,sizeof(a));
int n,t=1;
scanf("%d",&n);
if(n==1||n==-1)
printf("%d\n",n);
else
{
if(n<0)
{
n=-n;
printf("-");
}printf("0.");
while(t&&a[t]!=1) //判断 循环
{
a[t]=1;
t*=10;
printf("%d",t/n);
t%=n;
}printf("\n");
}
}return 0;
}
}
运行时错误:
常见出错的原因可能有以下几种:
1、数组开得太小了,导致访问到了不该访问的内存区域
2、发生除零错误
3、大数组定义在函数内,导致程序栈区耗尽
4、指针用错了,导致访问到不该访问的内存区域
5、还有可能是程序抛出了未接收的异常
阅读全文
0 0
- 一个简单的数学题
- 一个简单的数学题
- 一个简单的数学题
- 一个简单的数学题
- NYOJ 330 一个简单的数学题【数学题】
- HDU1013一个简单的数学题
- acm-一个简单的数学题
- NYOJ 一个简单的数学题
- NYOJ-330 一个简单的数学题
- NYOJ 一个简单的数学题 南工330
- nyoj 330 一个简单的数学题
- NYOJ 330 一个简单的数学题
- nyoj-330-一个简单的数学题
- NYOJ 330 一个简单的数学题
- NYOJ 330 一个简单的数学题【思维】
- 南阳OJ 一个简单的数学题
- nyoj 330 一个简单的数学题
- nyoj1110 一个简单数学题
- C++学习笔记
- spring事物传播机制
- sde-gcc编译工具链(二) Tool-Chain
- 11181
- 矩阵翻转--python的伪数组
- 一个简单的数学题
- jQuery动画
- 最优化理论
- C语言 数独 递归
- SQL语句的一些基本知识
- unity链接mysql数据库,简单实用
- linux基础(九)系统日志
- PC端Windows 登录多个微信实现
- 链式栈