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 }

你可能感兴趣的:(uva)