首页 > ACM题库 > HDU-杭电 > hdu 2522 A simple problem[解题报告]C++
2014
02-09

hdu 2522 A simple problem[解题报告]C++

A simple problem

问题描述 :

Zty很痴迷数学问题.。一天,yifenfei出了个数学题想难倒他,让他回答1 / n。但Zty却回答不了^_^. 请大家编程帮助他.

输入:

第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).

输出:

第一行整数T,表示测试组数。后面T行,每行一个整数 n (1<=|n|<=10^5).

样例输入:

4
2
3
7
168

样例输出:

0.5
0.3
0.142857
0.005952380

http://acm.hdu.edu.cn/showproblem.php?pid=2522

分析:循环小数的循环节:以余数是否相同作为判断条件,最后一位应为结果中出现相同的余数那

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

const int NM=100005;
int a[NM],h[NM];

int main()
{
	int i,j,k,flag,temp,n,num;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
		{
			scanf("%d",&num);
			flag=0;
			if(abs(num)==1)  //+-1
			{
				printf("%d\n",num);
				continue;
			}
			if(num<0) 
			{flag=1;num=-num;}
			memset(h,0,sizeof(h));
			h[1]=1;  //1/9,1/3 etc
			temp=1; j=0;		
			while(temp)
			{
			/*while(temp<num)
			{
			a[j++]=0;
			temp*=10;
			}*/
				temp*=10;	
				a[j++]=temp/num;
				temp%=num;
				if(h[temp]) break;  //	
				h[temp]=1;		
			}
			if(flag) printf("-");
			
			printf("0.");
			for(k=0;k<j;k++)
				printf("%d",a[k]);
			printf("\n");
		}
	}
	return 0;
}

解题转自:http://blog.csdn.net/killua_99/article/details/12868803


  1. 网站做得很好看,内容也多,全。前段时间在博客园里看到有人说:网页的好坏看字体。觉得微软雅黑的字体很好看,然后现在这个网站也用的这个字体!nice!

  2. #include <stdio.h>
    int main(void)
    {
    int arr[] = {10,20,30,40,50,60};
    int *p=arr;
    printf("%d,%d,",*p++,*++p);
    printf("%d,%d,%d",*p,*p++,*++p);
    return 0;
    }

    为什么是 20,20,50,40,50. 我觉得的应该是 20,20,40,40,50 . 谁能解释下?