关于蓝桥杯刷题统计一题的问题

蓝桥杯“刷题统计”一题题目如下:

img

依照测试用例所以输出了i-1,但我不理解为什么是i-1
还有就是测试用例一直有4个没过,不知道问题在哪里

img

完整代码如下

#include 
#include 

int main(int argc, char *argv[])
{
  long int a,b,n,i,done=0;
  scanf("%ld",&a);
  scanf("%ld",&b);
  scanf("%ld",&n);
  for(i=1;doneif((i%7==0)||(i%7==6)){
      done+=b;
    }
    else{
      done+=a;
    }
  }
  printf("%ld",i-1);
  // 请在此输入您的代码
  return 0;
}

因为done累加大于n时,你还会继续循环,从而i多加了1。当done<n不成立时才结束循环。建议改为while循环
注意题目中条件,a、b、n的有效范围是小于10的18次方,所以都应该定义为long long型才可以。

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
  long long a,b,n,i,done=0;
  scanf("%lld",&a);
  scanf("%lld",&b);
  scanf("%lld",&n);
  for(i=1;done<n;i++){
    if((i%7==0)||(i%7==6)){
      done+=b;
    }
    else{
      done+=a;
    }
  }
  printf("%lld",i-1);
 
  return 0;
}