题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12833&courseid=268
解题报告:有个11个月大的程序员写了一个二分查找,想要实现的功能是输入一个数组,数组里面都是100以内的整数,然后输入一个x,如果这个数组中存在大于等于x的
数就输出这个数在数组中的位置,如果没有就输出数组的长度,但是这个代码有bug。现在给出数组长度n,x,还有一个y,y为1的时候让你出一组可以让这段代码得到正确答案的数据,y为2的时候让你出一组让这段代码可以得到错误结果的数据。
分四种情况讨论
1.x <= n && y == 1 ////输出 1,2,3.....(x-1) (x+1)....n+1
2.x > n && y == 1 ////1,2,3,4......n
3.x <= n && y == 2 ////1,2,3,4.......n
4.x > n && y == 2 //////1,2,3,4 .......x
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 using namespace std; 6 7 int ans[10005]; 8 int main() 9 { 10 int n,x,y,T; 11 scanf("%d",&T); 12 while(T--) 13 { 14 scanf("%d%d%d",&n,&x,&y); 15 // if(n == 1 && y == 2) 16 // { 17 // printf("1 "); 18 // continue; 19 // } 20 ///////////////////一共分四种情况 21 if(x <= n && y == 1) //要正确同时x小于等于n的情况 22 { 23 int f = 0; 24 for(int i = 1;i <= x-1;++i) 25 ans[++f] = i; 26 for(int i = x+1;f <= n;++i) 27 ans[++f] = i; 28 for(int i = 1;i <= n;++i) 29 printf(i == 1? "%d":" %d",ans[i]); 30 puts(""); 31 continue; 32 } 33 for(int i = 1;i <= n-1;++i) 34 printf(i == 1? "%d":" %d",i); 35 if(n > 1) printf(" "); 36 if(y == 1) 37 printf("%d ",n); 38 else 39 { 40 if(x <= n) 41 printf("%d ",n); 42 else printf("%d ",x); 43 } 44 } 45 return 0; 46 }