有道难题练习赛2中的c题
描述 给定一个整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 输入 第一行是一个整数T,表示一共有多少组数据。 1<= T <= 100
接下来的每组数据共两行,第一行是数列中数的个数n ( 1 <= n <= 100),第二行是由n个整数组成的数列。
输出 对于每组数据,输出一个整数(占一行),就是数列中等于其他两个数之和的数的个数。 样例输入 2
4
1 2 3 4
5
3 5 7 9 10
样例输出 2
1注意:这道题包括0和负数,故份两种情况。#include <stdio.h>
int main(){
int n,t,m,i,j,k,sum,f,T,ff;
scanf("%d",&T);
long a[200];
while(T--){
sum=0;ff=0;
scanf("%d",&n);
for(i=1; i<=n; i++){
scanf("%ld",&a[i]);
if(a[i]<=0)
ff=1;
}
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
if(ff==0){
for(i=n; i>2; i--){
f=0;
for(j=i-1; j>1; j--)
for(k=i-2; k>0; k--)
if(a[i]==a[j]+a[k]){
f=1;
break;
}
if(f==1)
sum++;
}
}
else{
for(i=n; i>0; i--){
f=0;
for(j=n; j>0; j--)
for(k=n; k>0; k--)
if(a[i]==a[j]+a[k]&&i!=j&&j!=k&&i!=k){
f=1;
break;
}
if(f==1)
sum++;
}
}
printf("%d\n",sum);
}
return 0;
}
相关文档:
编译一个图象接口库,其中用到cvSaveImage( out_img_name, img); 编译报错:
too few arguments to function cvSaveImage
一下子就糊涂了,从来都是这么用 cvSaveImage 的。highgui.h里的函数原型也是定义了缺省的,
CVAPI(int) cvSaveImage(const char* filename, const CvArr* image, const int* params CV_DEFA ......
一 首先总结一下SD卡的写文件,需注意的事项如下:
1. FAT16 写的时候必须至少写一个扇区。
2. FAT表不能频繁的读写,否则会出错。申请新的一个簇时,直接在这个簇里面(即下一簇号)的写为0XFFFF。
3. FAT似乎必须转化成u16才能写。貌似是这样,具体没仔细看。
4. 获取新的索引簇的时候,直接从旧的索引簇的后面 ......
最近一直忙毕业的相关事情,加上工作,转眼间,又到月底了,之前承诺的每月一篇博文,前几天就一直在寻找到底要写什么,近两天又突然发现有很多东西可以写。本篇就先延续之前的一篇基于Cookie的安全检查机制(深入C/C++之基于Cookie的安全检查(VS2005))来介绍下另外一种在DEBUG版本下的安全检查,也就是CheckStackVars检 ......
在做SDL至Android的移植时,键盘事件是能正常捕获到,看了SLD的源码,发现用的device是 /dev/tty0,但是鼠标叫是不能成功捕获,总是得到 0,运行命令查看devices时,显示如下:
# cat /proc/bus/input/devices
cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="qwerty ......