看了一下网上这道题的报告,大家都叫题目水。
说这道题水证明没有深入思考这道题的一种情况,有的人2次完全扫描数组也解决了这道题,那种解法不在讨论之列。
这种情况就是<1,3>组合,我开始写的是if(a[j]==a[i]*2 || (a[j]==a[i]/2 && a[i]%a[i]==0))count++;这样就把这种情况算在里面了,肯定是WA了
还有就是通过了这道题会用了goto,而且知道POJ是不排斥goto语句的
上AC的代码
#include <stdio.h>int a[20];void dosomething(int num)//num是每一个list数的个数
{//testint i;/*for(i=0;i<num;i++)printf("%d ",a[i]);printf("\n");*/int j;int count=0;for(i=0;i<num-1;i++){for(j=i+1;j<num;j++){//printf("i==%d j==%d\n",i,j);if(a[j]==a[i]*2 || (a[j]==a[i]/2 && a[i]%2==0))count++;}}printf("%d\n",count);
}int main()
{int i,tmp;while(1){for(i=0; ;i++){//首先输入数据scanf("%d",&tmp);if(tmp==-1)goto END;//return 0;if(tmp==0){dosomething(i);break;}a[i]=tmp;}}END: return 0;//return 0;
}