注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

东月之神

在单纯的观念里面,生命就容易变得比较深刻!

 
 
 

日志

 
 
关于我

别驻足,梦想要不停追逐,别认输,熬过黑暗才有日出,要记住,成功就在下一步,路很苦,汗水是最美的书!

网易考拉推荐

xmu 1011.Fractions to Decimals  

2011-11-08 18:27:25|  分类: ACM |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1011.Fractions to Decimals
Time Limit: 2000 MS         Memory Limit: 65536 K
Total Submissions: 1352 (209 users)         Accepted: 252 (181 users)
[ My Solution ]

Description

Write a program that will accept a fraction of the form N/D, where N is the numerator and D is the denominator and print the decimal representation. If the decimal representation has a repeating sequence of digits, indicate the sequence by enclosing it in brackets. For example, 1/3 = .33333333...is denoted as 0.(3), and 41/333 = 0.123123123...is denoted as 0.(123). Use xxx.0 to denote an integer. Typical conversions are:

1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)

Input

A single line with two space separated integers, N and D, 1 <= N,D <= 100000.

Output

The decimal expansion, as detailed above. If the expansion exceeds 76 characters in length, print it on multiple lines with 76 characters per line.

Sample Input

45 56

Sample Output

0.803(571428)

Source
USACO
 
很早以前的题,一直WA,数据觉得都是对的。今天无聊看了下代码,原来数组开得太小了,数组开大后就直接过了。哎。。。。
#include<stdio.h>    
#define maxn 100000  
int y[maxn];    
int s[maxn];   
int N, D, a, b;   
inline void xhj()   
{    
    int i = 0, j = 1;    
    s[0] = N / D; y[0] = N % D;   
    b = 0; a = 0;    
    while(y[b] != 0 && j == 1 && b < maxn)    
    {    
        b++;   
        s[b] = (y[b-1] * 10) / D;     
        y[b] = (y[b-1] * 10) % D;   
        for(i = 0; i <= b - 1; i++)    
        {    
            if(y[b] == y[i])  
            {    
                a = i + 1;    
                j = 0;    
                break;    
            }    
        }    
    }    
}    
int main()  
{    
    int i, k;     
    while(scanf("%d%d", &N, &D)!= EOF)  
    {  
        k = 1;    
        xhj();    
        printf("%d", s[0]);  
        while(1)  
        {  
            if(s[0] < 10) break;  
            ++k;  
            s[0] = s[0] / 10;  
        }   
        if(b > 0) {printf("."); ++k;}  
        if(b == 0){ printf(".0");++k;++k;}    
        for(i = 1; i <= b; i++)    
        {    
            if(i == a) {printf("("), ++k;}    
            printf("%d",s[i]);  
            ++k;  
            if(k == 76){ printf("\n"); k = 0;}  
        }    
        if(a > 0) printf(")");  
        if(k != 1)    
            printf("\n");  
    }  
return 0;  

  评论这张
 
阅读(466)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017