加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数取余(大数模小数)

发布时间:2020-12-14 05:09:46 所属栏目:大数据 来源:网络整理
导读:对于一些大数取余,可以利用模拟手算取余的方法进行计算。 e.g.有一个大数 989565215785528545587(大数) 对 10003(小数) 取余,需要将该大数从最左端开始对10003取余; start: 9%10003==9; (9*10+8)%10003==98; (98*10+9)%10003==989; (989*10+5)%10003=

  对于一些大数取余,可以利用模拟手算取余的方法进行计算。

  e.g.有一个大数989565215785528545587(大数)10003(小数)取余,需要将该大数从最左端开始对10003取余;

    start:

      9%10003==9;

      (9*10+8)%10003==98;

      (98*10+9)%10003==989;

      (989*10+5)%10003==9895;

      (9895*10+6)%10003==8929;

      (8929*10+5)%10003==9271;

      ......

  上一道模板题:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1870

        ?Introduction?to?the?problem

             ? ? ? ? ?? Your?job?is,?given?a?positive?number?N,?determine?if?it?is?a?multiple?of?eleven.

           Description?of?the?input
           ? ? ? ? ? The?input?is?a?file?such?that?each?line?contains?a?positive?number.?A?line?containing?the?number?0?is?the?end?of?the?input.? The?given?numbers?can?contain?up?to?1000?digits.

          Description?of?the?output

            ? ? ? ? ? ? ??The?output?of?the?program?shall?indicate,?for?each?input?number,?if?it?is?a?multiple?of?eleven?or?not.

          Sample?input:

                     112233
                30800
                2937
                323455693
                5038297
                112234
                0

          Sample?output
                   ? ? ? ? ? ??112233?is?a?multiple?of?11.
                30800?is?a?multiple?of?11.
                2937?is?a?multiple?of?11.
                323455693?is?a?multiple?of?11.
                5038297?is?a?multiple?of?11.
                112234?is?not?a?multiple?of?11.

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int main()
 5 {
 6     int l,ans,i;
 7     char a[2000];
 8     while(~scanf("%s",a))
 9     {
10         if(strcmp(a,"0") == 0) break;  // 注意这里判断为零的情况,不能直接a==0
11         l = strlen(a);
12         ans = 0;
13         for(i = 0; i < l; i++)
14         {
15             ans = (ans * 10 + (a[i] - 0)) % 11;  // 重点在这里的大数取余算法
16         }
17         if(ans == 0) // 除的尽
18             printf("%s is a multiple of 11.n",a);
19         else
20             printf("%s is not a multiple of 11.n",a);
21     }
22     return 0;
23 }
View Code

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读