LibreOJ #6220. sum(数论)

  题目大意:在数组中找出一些数,使它们的和能被n整除

  这题标签是数学,那我就标题就写数论好了...

  显然如果数组中有n的倍数直接取就行。

  那假设数组中没有n的倍数,把数组中的数求前缀和后全部%n,会得到一堆1~n-1的数(注意没有0,因为数组中没有n的倍数),那根据抽屉原理一定有两个相同的数,设这两个相同的数所在的位置为l和r,那么下标在[l+1,r]的这些数的和一定是n的倍数

  记得开LL,我还RE两发QAQ

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#define ll long long
using namespace std;
const int maxn=1000050,inf=1e9;
ll n,sum;
ll a[maxn],v[maxn];
void read(ll &k)
{
    int f=1;k=0;char c=getchar();
    while(c<‘0‘||c>‘9‘)c==‘-‘&&(f=-1),c=getchar();
    while(c<=‘9‘&&c>=‘0‘)k=k*10+c-‘0‘,c=getchar();
    k*=f;
}
int main()
{
    read(n);sum=0;
    for(int i=1;i<=n;i++)
    {
        read(a[i]);
        sum=(sum+a[i])%n;
        if(!v[sum])v[sum]=i;
        else
        {
            for(int j=v[sum]+1;j<=i;j++)printf("%d %lld\n",j,a[j]);
            return 0;
        }
    }
    return 0;
}

时间: 2024-11-10 09:34:35

LibreOJ #6220. sum(数论)的相关文章

BZOJ 1257: [CQOI2007]余数之和sum( 数论 )

n >= k 部分对答案的贡献为 k * (n - k) n < k 部分贡献为 ∑ (k - ⌊k / i⌋ * i)  = ∑  , ⌊k / i⌋ 相等的数是连续的一段, 此时这段连续的数对答案的贡献成等差数列, 可以O(1)求出..然后就分⌊k / i⌋ 相等的一块一块来就行了. 分出来大概是sqrt(k)块.这个sqrt(k)我并不会证Orz...写了个程序验证了一下, 分出来的块数和2 * sqrt(k)非常接近. 所以时间复杂度为O(sqrt(k)) --------------

cf 319 div 2 Modulo Sum 数论+DP

 Modulo Sum 题目抽象:给你你一个整数数组,能否从中取出一些树,使得他们的和能被m整除. 分析:见代码注释. 1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 const int MS = 1000005; 5 int n, m; 6 int cnt[MS], r[MS], tem[MS]; 7 int main() { 8 scanf("%d%d", &n, &

BZOJ 3944 Sum 数论

题目大意:求∑ni=1φ(i)和∑ni=1μ(i). n≤231?1 令F(n)为f(n)的前缀和,G(n)为g(n)的前缀和,且满足g(n)=∑i|nf(i),则有: G(n)=∑ni=1g(i) =∑ni=1∑j|if(j) =∑nj=1∑j|if(j) =∑nj=1?nj?f(j) =∑nj=1F(?nj?) ∴F(n)=G(n)?∑ni=2F(?ni?) 若G(n)可以在O(1)时间内算出,则F(n)可以在O(n34)的时间内算出(别问我复杂度是咋算的) 如果预处理前O(n23)的部分,

UVA 10791 Minimum Sum LCM (数论)

LCM (Least Common Multiple) of a set of integers is defined as the minimum number, which is a multiple of all integers of that set. It is interesting to note that any positive integer can be expressed as the LCM of a set of positive integers. For exa

POJ 1775 sum of Factorial (数论)

链接:http://poj.org/problem?id=1775 Description John von Neumann, b. Dec. 28, 1903, d. Feb. 8, 1957, was a Hungarian-American mathematician who made important contributions to the foundations of mathematics, logic, quantum physics,meteorology, science,

Codeforces 396B On Sum of Fractions 数论

题目链接:Codeforces 396B On Sum of Fractions 题解来自:http://blog.csdn.net/keshuai19940722/article/details/20076297 题目大意:给出一个n,ans = ∑(2≤i≤n)1/(v(i)*u(i)), v(i)为不大于i的最大素数,u(i)为大于i的最小素数, 求ans,输出以分式形式. 解题思路:一开始看到这道题1e9,暴力是不可能了,没什么思路,后来在纸上列了几项,突然想到高中时候求等差数列时候用到

uva 10290 {Sum+=i++} to Reach N (数论-整数和素数)

Problem H {sum+=i++} to Reach N Input: standard input Output:  standard output Memory Limit: 32 MB All the positive numbers can be expressed as a sum of one, two or more consecutive positive integers. For example 9 can be expressed in three such ways

GCD SUM 强大的数论,容斥定理

GCD SUM Time Limit: 8000/4000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatus Problem Description 给出N,M执行如下程序:long long  ans = 0,ansx = 0,ansy = 0;for(int i = 1; i <= N; i ++)   for(int j = 1; j <= M; j ++)       if(gcd(i,j)

$loj530\ [LibreOJ\ \beta\ Round \#5]$ 最小倍数 数论

正解:数论 解题报告: 传送门$QwQ$! 不想做题,来水点儿简单点的$QwQ$. 一个显然的点在于可以直接对不同质因子分别算$n_{min}$最后取$max$. 这个正确性还是蛮显然的?因为只要有$n\geq n_{min}$就一定能整除这个质因子呗$QwQ$. 现在就只要分别求这个$n_{min}$了 考虑二分呗,然后$n!$中$x$的指数之和就是$\sum \frac{n}{x^i}$ $over$ 原文地址:https://www.cnblogs.com/lqsukida/p/11676