主题:求解
			 exe85611
				 [专家分:0]  发布于 2005-06-29 14:25:00
 exe85611
				 [专家分:0]  发布于 2005-06-29 14:25:00							
			使用数组精确计算M/N(0〈M〈N〈=100)的值。如果M/N是无限循环小数,则计算并输出他的第一个循环节,同时要求输出循环节的起止位置(小数位的序号)。
						
					 
		
			
回复列表 (共5个回复)
		
								
				沙发
				
					 CFreely [专家分:870]  发布于 2005-06-30 09:20:00
CFreely [专家分:870]  发布于 2005-06-30 09:20:00				
				似乎做过类似的题目!
M N 都很小,直接除就可以了
用一个数组逐位保存除出来的结果
并用一个变量保存余数
每除一次都要进行统计,看是否有重复的
							 
						
				板凳
				
					 hadewood [专家分:60]  发布于 2005-06-30 09:46:00
hadewood [专家分:60]  发布于 2005-06-30 09:46:00				
				个人观点:N只含有2、5为因数的直接除,其他试用n个9去除N,直到得到整数为止,然后乘以M
							 
						
				3 楼
				
					 00beiyan [专家分:960]  发布于 2005-07-05 00:32:00
00beiyan [专家分:960]  发布于 2005-07-05 00:32:00				
				int a,b;   //两个操作数;                               
int frist;//除法出来的整数部分;
int second[MAX]={0};//小数部分
{
  first=a/b;//求出整数部分;
  yushu=a%b*10;//得出余数;
  for(int i=0;i<MAX;i++)循环求位;
 {
  
  cput=yushu/b;//得到一个了除法结果,放心,一定是一位的;
  yushu=yushu%b*10;//进位
  for(int j=0;j<i;j++)比较是否重复
     if(second[i]==second[j])  return;//余数重复,循环结束;
  second[i]=cput;没有重复,可以使用
 }
}
							 
						
				4 楼
				
					 编程黑客 [专家分:1660]  发布于 2005-07-06 21:52:00
编程黑客 [专家分:1660]  发布于 2005-07-06 21:52:00				
				QB可以用高精度除法做,超出范围
就用一个数组把小数部分每一位
取出来,再查找,如有几个相同的
字符,就用一个DO循环,计算有多
少位,最后输出.[em13]
							 
						
				5 楼
				
					 davidw017 [专家分:4170]  发布于 2005-07-07 15:48:00
davidw017 [专家分:4170]  发布于 2005-07-07 15:48:00				
				3 楼的差不多吧,就是先除存起来,然后把得到的结果和以前的结果比较,如果一样就输出,不一样就不输出
							 
									
			
我来回复