请看一下(c语言问题

问题遇到的现象和发生背景 c语言题目练习
用代码块功能插入代码,请勿粘贴截图
#include 

int main()
{
    int a,b;
    int n=1;
    while(scanf("%d%d",&a,&b),a!=EOF)
    {
        if((a&b)==1)
          n++;
        if((a&b)==0)
          {
              scanf("%0b%0b",&a,&b);
              n++;
              if((a&b)==0)
                  printf("%d",n);
          }
    }
    

 return 0;   
}

运行结果及报错内容 超时
我的解答思路和尝试过的方法 想改变循环结束条件
我想要达到的结果 能正常运行

img


题目描述:
墨染家年轻的巫女去山间的某个神社见习。相传这座神社曾有一把带有神性的石中剑(刀),但曾经断掉过一次。墨染小姐找到一张记录图纸。请你确认这把石中剑(刀)是否断掉了。

输入:
第一行,两个 1 ,表示刀柄。

随后每行两个数, 0 表示此处是空缺。 1 表示此处是刀身。刀身各部分均紧密相连(各处 1 都相邻),则说明刀身完整。若从某处以后,其余部分刀身和刀柄不连通,则这部分刀身断掉了。

输出:
若石中剑(刀)完整,输出剑长,否则输出从刀柄到第一个裂口为止的刀长。(补充:就是输出连通到的最后一行1的所在行数)

样例:
输入1:
1 1
1 1
1 0
0 1
1 1
输出1:
3


 while(scanf("%d%d",&a,&b)&&a!=EOF)

这个地方应该用与&&,不然是退不出来的