WA WA WA WA,无语了
程序代码:
#include<stdio.h> int compare(int a[],int i); int main() { int one,start,flag,num,big,small,ok,temp,time; int a[]={4,6,8,10,12,13,16,18,19,21,32}; scanf("%d",&one); time=0; for(num=1;num<=100;num++) { big=100;small=1;flag=one;start=0;ok=0; do { flag++; if(!compare(a,flag)) { temp=start+1; } else temp=(big-small)/3+start; if(temp>num) big=temp; else if(temp<num) small=temp; if((big-small==2)&&compare(a,flag+1)) break; start=small; if(temp==num) { ok=1; if(!compare(a,flag)) { time++; if(num<10) { printf("%d %d\n",num,flag); } else printf("%d %d\n",num,flag); break; } } if(flag==33) flag=0; }while(ok==0); if(time==10) break; } return 0; } int compare(int a[],int i) { int ok,j; for(j=0;j<11;j++) { if(i!=a[j]) ok=1; else { ok=0; break; } } return ok; }
题目是:“终极密码”的游戏,开始的start=0,规则是某一个同学从1~100中选一个号码,让后面的同学依次按学号顺序来猜(33号后面为1号)。例如1号同学选10,范围是(1~100);2号同学猜33,范围变成(33~100),start=33;女生的都是猜start+1,而男生是猜:范围/3+start,例如上述2号猜(100-1)/3+start=33。已知共有33个同学,学号4,6,8,10,12,13,16,18,19,21,32为女生。要求输入一个男生学号,输出让女生唱歌的数字及女生学号(最多输10项)。
题目很绕,他给的示例是输入15,这个测试数据我是对的,但是当我输入1的时候,笔算的结果和电脑算出来的不一样。
请问是什么原因。