zoukankan      html  css  js  c++  java
  • K倍区间

    /*
    标题: k倍区间
    
    给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。  
    
    你能求出数列中总共有多少个K倍区间吗?  
    
    输入
    -----
    第一行包含两个整数N和K。(1 <= N, K <= 100000)  
    以下N行每行包含一个整数Ai。(1 <= Ai <= 100000)  
    
    输出
    -----
    输出一个整数,代表K倍区间的数目。  
    
    
    例如,
    输入:
    5 2
    1  
    2  
    3  
    4  
    5  
    
    程序应该输出:
    6
    
    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗  < 2000ms
    
    
    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    不要使用package语句。不要使用jdk1.7及以上版本的特性。
    主类的名字必须是:Main,否则按无效代码处理。
    
    
    
    
    */
    package test;
    
    import java.util.Scanner;
    
    public class k倍区间 {
        public static void main(String arg[]){
            long sta=System.currentTimeMillis();
            Scanner input=new Scanner(System.in);
            int n=input.nextInt();
            int k=input.nextInt();
            int[] a=new int[n+1];
            long[] dp=new long[n+1];
            dp[0]=0;long ans=0;
            for(int i=1;i<=n;i++){
                a[i]=input.nextInt();
                dp[i]=dp[i-1]+a[i];//dp中记录到第i个数时的总和
            }
            
            for(int i=1;i<=n;i++)  
            {  
                for(int j=0;j<=n-i;j++)  
                {  
                    if((dp[j+i]-dp[j])%k==0)  //计算序列中i-j数的和是否为k
                        ans++;  
                }  
            }
            System.out.print(ans);
            long end=System.currentTimeMillis();
            System.out.print("time"+(end-sta));
        }
    
    }
  • 相关阅读:
    Six steps to create google map in the HTML5
    Vocabularies on vegetable, fruit, meat etc.
    常用的Windows命令
    sqlhelper
    素材
    sql sever 跨库查询
    在annotation中却会有ERROR: Duplicate entry
    一份Java学习路线图
    Java算法实例集合(2)
    Java编程规范实践
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8563355.html
Copyright © 2011-2022 走看看