zoukankan      html  css  js  c++  java
  • 大数取余(大数模小数)

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

      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

     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.
    ", a);
    19         else
    20             printf("%s is not a multiple of 11.
    ", a);
    21     }
    22     return 0;
    23 }
    View Code
  • 相关阅读:
    抽象类和接口
    回调函数
    Spring Aop、拦截器、过滤器的区别
    事务
    SQL 模糊查询条件的四种匹配模式
    shell编程(二)
    shell编程(一)
    shell介绍
    字符验证码
    selenium
  • 原文地址:https://www.cnblogs.com/wsy107316/p/11366896.html
Copyright © 2011-2022 走看看