UVA 10494 - If We Were a Child Again(高精度除法和取余)

   题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1435

   这个题做的好没状态。上几天刷的高精度都白刷了啊。。。首先代码除法和取余以前都做过,还要查看以前的代码,模板还打错。。DEBUG好久,然后由于这个破精度(还是看的队友的解题报告),错了好几次,开始数组RE一一次,忘记0的情况(高精度老问题),还要有那个破空格,终于6A。。。基本上这个题所有的trick我都踩了。

 1 #include <stdio.h>
 2 #include <string.h>
 3 long long p[10001];
 4 char num[10001];
 5 int main()
 6 {
 7     long long i,j,k,len,n,mod;
 8     char lat[3];
 9     while(scanf("%s%s%lld",num,lat,&n)!=EOF)
10     {
11         memset (p,0,sizeof(p));
12         len = strlen(num);
13         for(i = 0;i <= len-1;i ++)
14         {
15             p[len-i-1] = num[i] - '0';
16         }
17         if(lat[0] == '/')
18         {
19             for(i = len-1;i >= 0;i --)
20             {
21                 if(p[i]%n == 0)
22                 {
23                     p[i] = p[i]/n;
24                 }
25                 else
26                 {
27                     if(i-1>=0)
28                     p[i-1] += (p[i]%n)*10;
29                     p[i] = p[i]/n;
30                 }
31             }
32             j = 0;
33             for(i = len-1;i >= 0;i --)
34             {
35                 if(p[i] != 0)
36                 j = 1;
37                 if(j)
38                 printf("%lld",p[i]);
39             }
40             if(j == 0) printf("0");
41             printf("\n");
42         }
43         else if(lat[0] == '%')
44         {
45             j = 1;
46             k = 1;
47             mod = p[0]%n;
48             for(i = 1;i <= len-1;i ++)
49             {
50                 k = k * 10 % n;
51                 if(p[i] != 0)
52                 {
53                     mod += (k*p[i])%n;
54                     mod = mod % n;
55                 }
56             }
57             printf("%lld\n",mod%n);
58         }
59     }
60     return 0;
61 }

  补充:取余 写的繁琐了。

1 mod = 0;
2 for(i = 0; i <= len-1; i ++)
3 {
4    mod = (mod*10 + num[i]-'0') % n;
5 }
posted @ 2012-05-28 20:02  Naix_x  阅读(400)  评论(0)    收藏  举报