精华内容
下载资源
问答
  • 判断整除

    千次阅读 2020-01-19 20:48:40
    所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、−3、−6、−9……都可以认为是3的倍数。 【输入】 输入的第一行包...

    【题目描述】
    一个给定的正整数序列,在每个数之前都插入+号或−号后计算它们的和。比如序列:1、2、4共有8种可能的序列:

    (+1) + (+2) + (+4) = 7
    (+1) + (+2) + (-4) = -1
    (+1) + (-2) + (+4) = 3
    (+1) + (-2) + (-4) = -5
    (-1) + (+2) + (+4) = 5
    (-1) + (+2) + (-4) = -3
    (-1) + (-2) + (+4) = 1
    (-1) + (-2) + (-4) = -7
    所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、−3、−6、−9……都可以认为是3的倍数。

    【输入】
    输入的第一行包含两个数:N(2<N<10000)和k(2<k<100),其中N代表一共有N个数,k代表被除数。第二行给出序列中的N个整数,这些整数的取值范围都0到10000之间(可能重复)。

    【输出】
    如果此正整数序列可被k整除,则输出YES,否则输出NO。(注意:都是大写字母)

    【输入样例】
    3 2
    1 2 4
    【输出样例】
    NO
    题目分析:
    这个题最关键的就是理解(a[1]+a[2]+…a[n])%k=((a[1]+a[2]+…a[n-1])%k+a[n]%k)%k.如果不能理解就去学习数论基础同余定理,对理解这个题有一定的帮助。
    我们用f[i][j]代表前i个数的和模k后的值为j,若是则赋值为1,反之为0.
    于是我们可以知道设置一个初始条件f[1][a[1]%k]=1;这表示第一个数模上k之后的值为a[1]%k,于是我们给它赋值为1代表存在。
    接下来我们把问题的规模扩展到前n个数,前n个数的和模上k之后的值是否为j就可以表示为f[n][j]=f[n-1][(j+a[n-1]%k)%k]其中j+a[n-1]%k)%k=((a[1]+a[2]+…+a[n-2])%k+a[n-1]%k)%k=(a[1]+a[2]+…+a[n-1])%k.
    但是由题意他可能加的是符号,所以公式就变成了f[i][j]=(f[i-1][(j+a[i]%k)%k]||f[i-1][(j-a[i]%k+k)%k])。(其中(j-a[i]%k+k)%k是为了防止数组越界)。
    代码:

    #include<iostream>
    #include<cmath>
    using namespace std;
    int a[10001],f[10001][101];
    int main()
    {
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        f[1][a[1]%k]=1;
        for(int i=2;i<=n;i++)
            for(int j=0;j<k;j++)
            f[i][j]=(f[i-1][(j+a[i]%k)%k]||f[i-1][(j-a[i]%k+k)%k]);
        if(f[n][0])
            cout<<"YES";
        else cout<<"NO";
        return 0;
    }
    
    展开全文
  • 判断整除c++

    千次阅读 2020-08-10 16:54:50
    判断整除 【题目描述】 一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列: (+1) + (+2) + (+4) = 7 (+1) + (+2) + (-4) = -1 (+1) + (-2) + (+4) = 3 (+1)...

    判断整除
    【题目描述】

    一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列:

    (+1) + (+2) + (+4) = 7
    
    (+1) + (+2) + (-4) = -1
    
    (+1) + (-2) + (+4) = 3
    
    (+1) + (-2) + (-4) = -5
    
    (-1) + (+2) + (+4) = 5
    
    (-1) + (+2) + (-4) = -3
    
    (-1) + (-2) + (+4) = 1
    
    (-1) + (-2) + (-4) = -7
    

    所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、-3、-6、-9……都可以认为是3的倍数。

    【输入】

    输入的第一行包含两个数:N(2<N<10000)和k(2<k<100),其中N代表一共有N个数,k代表被除数。第二行给出序列中的N个整数,这些整数的取值范围都0到10000之间(可能重复)。

    【输出】

    如果此正整数序列可被k整除,则输出YES,否则输出NO。(注意:都是大写字母)

    【输入样例】

    3 2

    1 2 4

    【输出样例】
    (-1)+(-2)+(-4)=-7
    (-1)+(-2)+(+4)=1
    (-1)+(+2)+(-4)=-3
    (-1)+(+2)+(+4)=5
    (+1)+(-2)+(-4)=-5
    (+1)+(-2)+(+4)=3
    (+1)+(+2)+(-4)=-1
    (+1)+(+2)+(+4)=7
    NO

    #include<iostream>
    #include<stack>
    #include<cmath>
    #include<string>
    using namespace std;
    #include<queue>
    #include<algorithm>
    int n;
    string convert(int i)
    {
     int k=n;
     string s="";
     if(i==0)
     {
      for(int j=0;j<n;j++)
         s=s+"0";
      return s;
     }
     while(k--)
     {
      char ch=i%2+48;
      s=s+ch;
      i=i/2;
     }
     reverse(s.begin(),s.end());
     return s;
    }
    int main()
    {
     int k,j,i,count=0,flag=0;
     cin>>n>>k;
     int a[10000];
     for(i=0;i<n;i++)
        cin>>a[i];
     count=pow(2,n);
     for(i=0;i<count;i++)
     {
      string s=convert(i);
      int sum=0;
      for(j=0;j<n;j++)
      {
       if(s[j]=='0')
       {
        sum=sum-a[j];
        if(j==n-1)
           cout<<"(-"<<a[j]<<")=";
        else
           cout<<"(-"<<a[j]<<")+";
       }
       else if(s[j]=='1')
       {
        sum=sum+a[j];
        if(j==n-1)
           cout<<"(+"<<a[j]<<")=";
        else
           cout<<"(+"<<a[j]<<")+";
       } 
      }
      cout<<sum<<endl;
      if(sum%k==0)
      {
       flag=1;
      }
     }
     if(flag)
        cout<<"YES"<<endl;
     else
        cout<<"NO";
     return 0;
    } 
    
    展开全文
  • 了解一些数的整除性质,我们就能很快判断一个大的数能否被某小数整除、能够很快的对数进行因式分解,比如1101肯定不是质数,3能够整除1101, .常见的数的整除性质有:注:因为零是所有非零数的倍数,所以 前面2、3、...

    366a59bdcb7fc66b3b3e1b2bd9b85501.png

    了解一些数的整除性质,我们就能很快判断一个大的数能否被某小数整除、能够很快的对数进行因式分解,比如1101肯定不是质数,3能够整除1101,

    .

    常见的数的整除性质有:

    83cd6b6a8fd8769c4329deae32777e0c.png
    注:因为零是所有非零数的倍数,所以

    d4208d1d2c38c9312cb1060879188eb4.png

    前面2、3、5、9数的整除性质都比较常见,后面7、11、13、17、19大家可能不太熟悉,所以今天来讲解一下后面5个数的整除性质。进一步,我们会发现后面5个数都用到了一种方法“割尾法”。

    对于任一整数

    ,我们可以写成
    ,其中
    ,那么7,11,13,17,19的整除性质可以写成以下形式:

    接下去我们都证明一下,思路是类似的:

    (1)

    (
    )

    (2)

    (
    )

    (3)

    (
    )

    (4)

    (
    )

    (5)

    (
    )

    .

    可能有些朋友会问:都是割尾法,我也知道要减去或加上个位数的倍数,但是结论有点多,我记不住怎么办?

    接下去我们来讲一个记忆方法,供大家参考

    我们可以通过7、11、13、17、19的倍数来记忆

    (1)7与13

    因为91是7与13的倍数,那么

    ;
    .

    (2)11,17,19

    因为11是11的倍数,那么

    ,

    因为17是17的倍数,那么

    ,

    因为19是19的倍数,那么

    ,

    可能有些人会有疑问通过减去各位的倍数得到的数还是很大怎么办?

    其实,我们可以不停的用上述的判断方法,直到能够快速判断为止。

    比如

    第一层判断:

    第二层判断

    除了割尾法还有其它的判断方法,比如11就有奇偶数位法,如果不太清楚可以看下面视频,有原理的解释(欢迎大家给点建议)

    知乎视频​www.zhihu.com

    想了解更多关于国际数学竞赛及课程知识,可参阅:

    双木止月Tong:国际数学竞赛及课程​zhuanlan.zhihu.com
    0c83e2494350e0b7e85fe2d15e0cfc3d.png
    展开全文
  • 1195:判断整除

    2020-01-19 16:38:49
    例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、−3、−6、−9…… 都可以认为是3的倍数。 【输入】 输入的第一行包含两个数: N (2< N ) 和 k (2< k ),其中 N 代表一共有N个数...

     

    【题目描述】

    一个给定的正整数序列,在每个数之前都插入+

    号或−号后计算它们的和。比如序列:1、2、4共有8

    种可能的序列:

    (+1) + (+2) + (+4) = 7
    (+1) + (+2) + (-4) = -1
    (+1) + (-2) + (+4) = 3
    (+1) + (-2) + (-4) = -5
    (-1) + (+2) + (+4) = 5
    (-1) + (+2) + (-4) = -3
    (-1) + (-2) + (+4) = 1
    (-1) + (-2) + (-4) = -7

    所有结果中至少有一个可被整数k

    整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、−3、−6、−9……

    都可以认为是3的倍数。

    【输入】

    输入的第一行包含两个数:N(2<N<10000)

    k(2<k<100),其中N代表一共有N个数,k代表被除数。第二行给出序列中的N个整数,这些整数的取值范围都0到10000

    之间(可能重复)。

    【输出】

    如果此正整数序列可被k

    整除,则输出YES,否则输出NO

    。(注意:都是大写字母)

    【输入样例】

    3 2
    1 2 4
    

    【输出样例】

    NO
    #include <iostream>
    #define A 10000+5
    
    using namespace std;
    
    long long a[A];
    
    int main()
    {
        int i,j;
        int n,k;
        cin>>n>>k;
    
        int sum=0;
        for(i=1;i<=n;i++)
        {
            cin>>a[i];
            sum+=a[i];
        }
        if(sum%k==0)
        {
            cout<<"YES"<<endl;
            return 0;
        }
        int temp;
        for(i=1;i<=n;i++)
        {
            temp=sum;
            if((temp-2*a[i])%k==0)
            {
                cout<<"YES"<<endl;
                return 0;
            }
        }
    
        cout<<"NO"<<endl;
    
        return 0;
    }
    

     

    展开全文
  • 判断整除 - 递推(详解)

    千次阅读 2018-12-13 20:26:29
    1195:判断整除 【题目描述】 一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列: (+1) + (+2) + (+4) = 7 (+1) + (+2) + (-4) = -1 (+1) + (-2) + (+4) ...
  • 1195:判断整除 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 3010 通过数: 1178 【题目描述】 一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列: (+1...
  • c语言XDOJ上机题 判断整除

    千次阅读 2021-01-12 18:38:57
    题目描述:编写程序,输入一个正整数,判断是否能被5和7同时整除,若可以,则输出yes;否则输出no。 输入格式:输入一个正整数。 输出格式:输出“yes”或“no”。 示例: 输入:35 输出:yes #include<stdio.h>...
  • I need to test whether each number from 1 to 1000 is a multiple of 3 or a multiple of 5. The way I thought I'd do this would be to divide the number by 3, and if the result is an integer then it would...
  • 判断整除 C

    2018-02-04 09:43:00
    所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、-3、-6、-9……都可以认为是3的倍数。 【输入】 输入的第一...
  • 判断整除(信息学奥赛一本通-T1195).pdf
  • 3531:判断整除总时间限制: 1000ms 内存限制: 65536kB 描述 一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列: (+1) + (+2) + (+4) = 7 (+1) + (+2) + (-4...
  • 算法-判断整除(信息学奥赛一本通-T1195)(包含源程序).rar
  • php 如何判断整除

    千次阅读 2016-07-18 13:53:04
    $a = 5 if (!($a % 5) && $a)  echo $a."可以被5整除";
  • 题目描述判断一个整数能否同时被3和5整除。输入一个整数n。输出如果n是能同时被3和5整除,输出“can”,否则请输出“cannot”。请注意不需要输出引号,行尾输出换行。样例输入14样例输出cannot#include&lt;stdio...
  • 所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、-3、-6、-9……都可以认为是3的倍数。 【输入】 输入的第一行包...
  • 今天小编就为大家分享一篇python判断一个数是否能被另一个整数整除的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • POJ 2.6 3531 判断整除

    千次阅读 2017-07-18 14:26:50
    3531:判断整除 总时间限制: 1000ms 内存限制: 65536kB描述一个给定的正整数序列,在每个数之前都插入+号或-号后计算它们的和。比如序列:1、2、4共有8种可能的序列: (+1) + (+2) + (+4) = 7 (+1) + (+2) + (-4) ...
  • VB判断整除并整除

    千次阅读 2012-06-05 17:03:32
    整除的数之和是 " & s   End Sub   Private Sub Command2_Click()   End   End Sub 'sub 过程:求 m 到 n 之间能 d 被整除的数之和   Public Sub sum(x As Integer, y As ...
  • 判断整数还是浮点数 >>> a=123 >>> b=123.123 >>> isinstance(a,int) True >>> isinstance(b,float) True >>>...判断是否能整除 ...
  • OpenJudge3531 判断整除

    千次阅读 2015-11-05 07:52:07
    题目:http://noi.openjudge.cn/ch0206/3531/ 分析:简单DP,全部右移100,注意不要越界. 代码:#include #include #include using namespace std; const int Tmax=205,Tmax2=10005; int n,k,a;...bool f[Tma
  • OpenJudge_P3531 判断整除(DP)

    千次阅读 2016-08-26 09:28:54
    所有结果中至少有一个可被整数k整除,我们则称此正整数序列可被k整除。例如上述序列可以被3、5、7整除,而不能被2、4、6、8……整除。注意:0、-3、-6、-9……都可以认为是3的倍数。 输入  输入的第一行包含...
  • C语言 判断是否整除例子

    万次阅读 2019-04-23 20:35:02
    #include <stdio.h> #include <stdlib.h> int main() { int a; printf("请输入一个整数:"); scanf("%d",&a); if(a%3==0||a%5==0) ... printf("这个数既不能被3整除也不能被5整除\n"); ...
  • 判断能否被15整除的问题,注意特殊情况那个的判断和输出
  • BigDecimal整除判断

    千次阅读 2019-08-27 14:59:55
    包装数量使用BigDecimal类型的变量存放,这里就用到了BigDecimal整除判断。 BigDecimal totalA = BigDecimal.ZERO; BigDecimal totalB = new BigDecimal("100");//B的数量 BigDecimal relationship = new ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,422
精华内容 31,368
关键字:

如何判断整除