随笔-20  评论-16  文章-36  trackbacks-0
      这题难度不高,细节很多,做了很多次分母,终于改对了,所以发下,以缓解我不爽的心情~~
      比较容易错的就是当最后一行恰好为50个数字的时候,不能再输出回车了……
#include <iostream>
using namespace std;

int remain[1001], divide[1001];
int main(){
    
int k, m, n;
    
while( scanf("%d%d",&m,&n) && n ){
        memset(remain,
-1,sizeof(remain));
        putchar(
'.');
        k
= 2;
        
while( m ){
            m
*= 10;
            divide[k]
= m/n;
            m
%= n;
            
if( remain[m]>= 0 ){
                
if( divide[remain[m]]!=divide[k] )
                    putchar(
'0'+divide[k]);
                
break;
            }

            putchar(divide[k]
+'0');
            
if( m==0 )    break;
            remain[m]
= k;
            
if( (k++)%50==0 )
                putchar(
'\n');
        }

        
if( (k-1)%50 )    putchar('\n');
        
if( m )    printf("The last %d digits repeat forever.\n",k-remain[m]);
        
else    puts("This expansion terminates.");
    }

    
return 0;
}

posted on 2009-06-25 15:47 古月残辉 阅读(432) 评论(0)  编辑 收藏 引用 所属分类: POJ

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理