zoukankan      html  css  js  c++  java
  • 1214

    http://lightoj.com/volume_showproblem.php?problem=1214

    这就是一道简单的大数取余。

    还想还用到了同余定理:

    所谓的同余,顾名思义,就是许多的数被一个数d去除,有相同的余数。d数学上的称谓为模。如a=6,b=1,d=5,则我们说a和b是模d同余的。因为他们都有相同的余数1。

    ////

    数学上的记法为:
    a≡ b(mod d)
    可以看出当n<d的时候,所有的n都对d同商,比如时钟上的小时数,都小于12,所以小时数都是模12的同商.
    对于同余有三种说法都是等价的,分别为:
    (1) a和b是模d同余的.
    (2) 存在某个整数n,使得a=b+nd .
    (3) d整除a-b.
    可以通过换算得出上面三个说法都是正确而且是等价的.
     
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<algorithm>
    #include<iostream>
    #include<vector>
    #include<queue>
    
    using namespace std;
    typedef long long LL;
    #define N 100000
    #define ESP 1e-8
    #define INF 0x3f3f3f3f
    #define memset(a,b) memset(a,b,sizeof(a))
    
    int main()
    {
        int T, t=1;
        scanf("%d", &T);
        while(T --)
        {
            char s[300];
            LL b;
            scanf("%s %lld", s, &b);
            if(b < 0)
                b = -b;
    
            printf("Case %d: ", t++);
    
            int len = strlen(s);
            if(len == 1 && s[0] == '0')
            {
                printf("divisible
    ");
                continue;
            }
    
            LL sum = 0;
            for(int i=0; i<len; i++)
            {
                if(s[i] == '-')
                    continue;
    
                sum = sum*10 + s[i]-'0';
                sum = sum%b;
            }
    
            if(sum == 0)
                printf("divisible
    ");
            else
                printf("not divisible
    ");
        }
        return 0;
    }
  • 相关阅读:
    docker学习
    LIS是什么?
    Android网络课程笔记-----定制通知系统
    java常用算法
    java正则表达式大全
    无需ROOT就能拿ANR日志
    Android网络课程笔记-----定制系统控件2
    Android网络课程笔记-----定制系统控件1
    Android网络课程笔记-----Fragment
    读《启示录》有感-----1
  • 原文地址:https://www.cnblogs.com/linliu/p/5550130.html
Copyright © 2011-2022 走看看