01/10/2018, 12:35
Tìm phần dư lớn nhất của 1 dãy con trong 1 tập số với 1 số cho trước
Đề bài là cho một dãy A có n số và 1 số m bất kì. Một dãy con của A là một dãy chứa các phần tử liên tiếp từ i đến j của A. Cho số nguyên m tìm một dãy con của A có phần dư của tổng các phần tử của dãy con đó với m là lớn nhất. Đây là code của e nhưng ko được tối ưu lắm, các tiền bối có phương pháp nào hay chỉ e với ạ
#include<stdio.h>
int main()
{
long int n,m,mod,num[100000];
long int max_mod = 0, sum = 0;
scanf("%ld %ld",&n,&m);
long int pos = n-1;
for(long int i=0;i<n;i++)
{
scanf("%ld",&num[i]);
}
for(long int i=0;i<n-1;i++)
{
while(pos>i)
{
for(long int j=i;j<pos+1;j++)
{
sum += num[j];
}
mod = sum%m;
if(mod>max_mod)
{
max_mod = mod;
}
pos--;
}
pos = n-1;
sum = 0;
}
printf("%ld",max_mod);
}
Bài liên quan