本文主要是介绍好题——hdu2522(小数问题:求1/n的第一个循环节),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。
知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好)
此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。
按照除法的机制,用一个函数表示出来就可以了,代码如下:
#include<iostream>
#include<algorithm>
#include<string>
#include<stack>
#include<queue>
#include<map>
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<time.h>
#include<math.h>#define eps 1e-9
#define N 100005
#define P system("pause")
using namespace std;
int hash[N];
void div(int x)
{int left=1; hash[1]=1;while(left) {left*=10;printf("%d",left/x);left%=x;if(hash[left]) break;hash[left]=1; }
}int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);ccint n,x;scanf("%d",&n);while(n--){scanf("%d",&x);if(x==1) {printf("1\n");continue;}if(x<0) {printf("-");x = 0-x;}printf("0.");memset(hash,0,sizeof(hash));div(x);printf("\n");} // P; return 0;
}
这篇关于好题——hdu2522(小数问题:求1/n的第一个循环节)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!