51nod 1103(抽屉原理、前缀和)
2018-01-24 12:03
225 查看
/*
51nod 1103
抽屉原理就是说
9个抽屉要放十个东西,必定有一个抽屉要放至少两个
而这题的思路就是
把每个数与前面所有数相加,然后对n取余
就是我们所说的前缀和取余
如果某一个等于0那么就输出包括这个数在内的之前的数
或者找到两个相同的余数输出左端点到右端点之间,包括右端点在内的数
因为题目特殊性
一组数据有多组结果
所以只要输出数据正确,即使与给定数据不同
也能AC
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define MAX 1000005
using namespace std;
int main()
{
int n;
cin>>n;
int a[50005],b[50005];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=(b[i-1]+a[i])%n;
}
int flag=0,ans,ans1,ans2;
for(int i=1;i<=n;i++)
{
if(b[i]==0)
{
flag=1;
ans=i;
break;
}
for(int j=i+1;j<=n;j++)
{
if(b[j]==b[i])
{
flag=2;
ans1=i;
ans2=j;
break;
}
}
if(flag==2)
break;
}
if(flag==0)
{
cout<<"No Solution"<<endl;
}
if(flag==1)
{
cout<<ans<<endl;
for(int i=1;i<=ans;i++)
cout<<a[i]<<endl;
}
if(flag==2)
{
cout<<ans2-ans1<<endl;
for(int i=ans1+1;i<=ans2;i++)
cout<<a[i]<<endl;
}
return 0;
}
51nod 1103
抽屉原理就是说
9个抽屉要放十个东西,必定有一个抽屉要放至少两个
而这题的思路就是
把每个数与前面所有数相加,然后对n取余
就是我们所说的前缀和取余
如果某一个等于0那么就输出包括这个数在内的之前的数
或者找到两个相同的余数输出左端点到右端点之间,包括右端点在内的数
因为题目特殊性
一组数据有多组结果
所以只要输出数据正确,即使与给定数据不同
也能AC
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define MAX 1000005
using namespace std;
int main()
{
int n;
cin>>n;
int a[50005],b[50005];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
{
cin>>a[i];
b[i]=(b[i-1]+a[i])%n;
}
int flag=0,ans,ans1,ans2;
for(int i=1;i<=n;i++)
{
if(b[i]==0)
{
flag=1;
ans=i;
break;
}
for(int j=i+1;j<=n;j++)
{
if(b[j]==b[i])
{
flag=2;
ans1=i;
ans2=j;
break;
}
}
if(flag==2)
break;
}
if(flag==0)
{
cout<<"No Solution"<<endl;
}
if(flag==1)
{
cout<<ans<<endl;
for(int i=1;i<=ans;i++)
cout<<a[i]<<endl;
}
if(flag==2)
{
cout<<ans2-ans1<<endl;
for(int i=ans1+1;i<=ans2;i++)
cout<<a[i]<<endl;
}
return 0;
}
相关文章推荐
- 51nod 1103 N的倍数 思路:抽屉原理+前缀和
- 51nod 1103 N的倍数 思路:抽屉原理+前缀和
- 51nod 1103 N的倍数 (抽屉原理)
- 51NOD 1103 N的倍数(抽屉原理)
- 51nod 1103 N的倍数 (抽屉原理)
- 51nod-1103-抽屉原理
- 51nod 1103:N的倍数 抽屉原理
- 51nod 1103 N的倍数(抽屉原理)
- 51nod 1103:N的倍数 抽屉原理
- 51nod 1103-N的倍数(抽屉原理)
- 51nod 1103 N的倍数(抽屉原理)
- 51nod 1103 N的倍数(抽屉原理)
- 51nod 1103 N的倍数 (抽屉原理)
- 51nod-1103 N的倍数(抽屉原理)
- 51nod 1396 还是01串【前缀和】
- 51nod 1682-中位数计数(前缀和)
- 树状数组求不带修改前缀最值问题 51NOD 1272 最大距离
- 51nod 1103 n的倍数
- 51nod 1422:沙拉酱前缀
- 51nod 1098 最小方差 排序+前缀和+期望方差公式