poj1745(Divisibility)java代码

题目链接

Consider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetical expressions that evaluate to different values. Let us, for example, take the sequence: 17, 5, -21, 15. There are eight possible expressions: 17 + 5 + -21 + 15 = 16
17 + 5 + -21 - 15 = -14
17 + 5 - -21 + 15 = 58
17 + 5 - -21 - 15 = 28
17 - 5 + -21 + 15 = 6
17 - 5 + -21 - 15 = -24
17 - 5 - -21 + 15 = 48
17 - 5 - -21 - 15 = 18
We call the sequence of integers divisible by K if + or - operators can be placed between integers in the sequence in such way that resulting value is divisible by K. In the above example, the sequence is divisible by 7 (17+5±21-15=-14) but is not divisible by 5.

You are to write a program that will determine divisibility of sequence of integers.

代码如下

import java.util.*;
public class Main {
	
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n,k;
        int [][]dp=new int [10010][110];
        
        int []a=new int [10010];
        n=scanner.nextInt();
        k=scanner.nextInt();
        for(int i=1;i<=n;i++)
        	a[i]=scanner.nextInt();
        dp[1][((a[1])%k+k)%k]=1;
        dp[1][((-a[1])%k+k)%k]=1;
        for(int i=2;i<=n;i++){
            for(int j=0;j<=k;j++){
                if(dp[i-1][((j-a[i])%k+k)%k]==1 || dp[i-1][((j+a[i])%k+k)%k]==1)
                    dp[i][j]=1;
            }
        }
        if(dp[n][0]==1)
        {System.out.print("Divisible\n");
        	
        }
        else
        {
        	System.out.print("Not divisible\n");
        	
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值