The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

FOJ 1846 Circulator

真是个讨厌的题目,输出及其猥琐。其他的点评,没了。

#include<iostream>
#include
<cmath>
using namespace std;
const int maxn=100020;

int v[maxn];
int order[maxn];
int ans[maxn];//存放结果

int solve(int n,int m,int &pos)
{
    memset(order,
0,sizeof(order));
    memset(v,
0,sizeof(v));
    
int f=0;
    
int cnt=0;
    v[n]
=1;n*=10;
    
while(n)
    
{
        
if(v[n%m]==1)
        
{
            f
=1;ans[++cnt]=n/m;n%=m;
            
break;
        }

        
else v[n%m]=1;
        ans[
++cnt]=n/m;
        n
%=m;
        order[n]
=cnt;
        n
*=10;
    }

    
if(f==0)
        pos
=-1;
    
else pos=order[n];
    
return cnt;
}


int get(int n)
{
    
return log((double)n);
}


int main()
{

    
int n,m;
    
while(scanf("%d%d",&n,&m)!=EOF)
    
{
        
int cnt;
        
int pos;
        
if(n%m==0)
        
{
            printf(
"%d.0\n",n/m);
            
continue;
        }

        
int zhengshu=n/m;
        n
%=m;
        
int len=solve(n,m,pos);
        
if(zhengshu!=0)
             cnt
=get(zhengshu)+1;
        
else 
            cnt
=2;
        
if(pos==-1)
        
{
            printf(
"%d.",zhengshu);
            
for(int i=1;i<=len;i++)
            
{
                printf(
"%d",ans[i]);
                cnt
++;
                
if(cnt%76==0)
                    printf(
"\n");
            }

            
if(cnt%76!=0)
                printf(
"\n");

            
        }

        
else
        
{
            printf(
"%d.",zhengshu);
            
for(int i=1;i<=pos;i++)
            
{
                printf(
"%d",ans[i]);
                cnt
++;
                
if(cnt%76==0)
                    printf(
"\n");

            }

            printf(
"(");
            cnt
++;
            
if(cnt%76==0)
                printf(
"\n");
            
for(int i=pos+1;i<=len;i++)
            
{
                printf(
"%d",ans[i]);
                cnt
++;
                
if(cnt%76==0)
                    printf(
"\n");
            }

            printf(
")");
            cnt
++;
            
if(cnt%76==0)
                printf(
"\n");
            
if(cnt%76!=0)
                printf(
"\n");
        }

    }

    
return 0;
}

posted on 2010-04-22 20:54 abilitytao 阅读(1010) 评论(2)  编辑 收藏 引用

评论

# re: FOJ 1846 Circulator 2010-04-23 13:04 凡客诚品

时空的福克斯的  回复  更多评论   

# re: FOJ 1846 Circulator 2010-04-24 09:11 普派官方网站

的法国美女是  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理