一道蛮有趣的题目,大伙来瞧瞧

来源:百度知道 编辑:UC知道 时间:2024/07/06 23:42:44
有一行数据例如9,4,8,2,3,发现前两项与后三项之和均为13.你的任务是编写一个程序满足如下要求:
1.输入一个数据n,其下输入n个整型数据。
2.若其前k项之和与后n-k项之和相等,则记录k的位置。
3.不满足要求2,则输出Impossible
如:
输入:5
9 4 8 2 3
输出:k=2
输入:6
1 2 1 2 1 1
输出:k=3
输入:5
3 9 4 2 8
输出:Impossible

哪位高手帮帮忙啊!最好用C++编写

#include <iostream.h>

int main(){
int n,sum=0,i,f;
int *p;
cin>>n;
f=0;
p=new int[n];
for(i=0;i<n;i++){
cin>>p[i];
sum+=p[i];
if(i>=1)
p[i]=p[i]+p[i-1];

}
for(i=0;i<n;i++){
if(sum-p[i]==p[i]){
f=1;
break;
}
}
if(f)
cout<<"k="<<i+1<<endl;
else
cout<<"Impossible"<<endl;

delete []p;
return 0;
}

太简单了。
int main()
{
unsigned int n=0;
int *p=NULL;
cin>>n;
p=new int[n];

int S1=0;
int S2=0;

for(int i=1;i<=n;i++)
{cin>>*(p+i-1);S2+=*(p+i-1);}

for(int i=1;i<=n;i++)
{
S1+=*(p+i-1);
S2-=*(p+i-1);

if (S1 == S2) {cout<<endl<<i<<endl;return 0;}
}

cout<<"Impossible!";
ret