zoukankan      html  css  js  c++  java
  • poj 3370 Halloween treats

    题目地址:http://poj.org/problem?id=3370

    一篇很好的博客:http://www.cppblog.com/pcfeng502/archive/2009/10/18/98902.aspx

    #include<stdio.h>
    #include<string.h>
    #define maxn 100005
    int a[maxn],b[maxn],num;
    void work(int c,int n)
    {
    	int sum = 0,t;
    	memset(b,0,sizeof(b));
    	for(int i = 1; i <= n; i++)
    	{
    		sum += a[i];
    		t = sum%c;
    		sum %= c;
    		if(t == 0)
    		{//当从第一个元素起到第i个元素的和可以被c整除,则1 -> i 即为所求的一个解
    			for(int j = 1; j <= i; j++)
    				printf("%d ",j);
    			return ;
    		}
    		else
    		{
    			if(b[t] > 0)
    			{// 当i > j 时sum[i]%c == sum[j]%c 则sum[i] = m*c +r ,sum[j] = n*c + r,sum[i] - sum[j] = m*c - n*c + r - r = (m-n)*c
    			//所以从j的下一个元素开始到到i元素的和可被c整除,则j+1 - i 即为所求解。 
    				for(int j = b[t]+1; j <= i; j++)
    					printf("%d ",j);
    					return; 
    			}
    		}
    		b[t] = i;
    	}
    }
    void init(int n)
    {//输入数据,
    	for(int i = 1; i <= n;i++)
    		scanf("%d",&a[i]);
    }
    int main()
    {
    	int c,n;
    	while(scanf("%d%d",&c,&n) != EOF && c+n)
    	{
    		init(n);
    		work(c,n);
    		printf("\n");
    	}
    	return 0;
    }
    


  • 相关阅读:
    前端-html/css
    数据结构-python
    接口测试-并发处理
    接口测试-高级运用
    接口测试-模拟网络请求
    接口测试-基础
    Jenkins-基础
    appium安装及环境搭建、入门
    Week12-unittest单元测试
    Redis在windows下安装与配置
  • 原文地址:https://www.cnblogs.com/LUO257316/p/3220819.html
Copyright © 2011-2022 走看看