解题思路:
       这可以归结为一个数n的求商和求余的问题。商是能换酒喝的瓶数(设为a),余数是不够换的空瓶数(设为b)。每次换酒后,空瓶数n等于a+b,然后n重新对3求商和求余,并设酒瓶数t对a进行累和。如此循环一直到n=1,2为止。n=1时,不能换酒;n=2时,借1空酒瓶换酒再还回去,n加1后再不能换酒。测试数据有多组,将n用数组元素s[i]表示。


注意事项:
       输入数据时由于是按回车键分隔数据,每次回车都要判断是否数据为0。如果是按空格或者其他分隔符则简单点。代码中用了好几次break和循环、判断语句,很不好理清代码结构,需要反复看代码才能明白。


参考代码:


#include <stdio.h>
int main()
{
  int s[10],i,a,b,t;//t为能喝到酒的瓶数
  for(i=0;i<10;i++){
    scanf("%d",&s[i]);
    if(0==s[i])
      break;
  }for(i=0;i<10;i++){
    t=0;
    if(s[i]==0)
      break;
    while(s[i]>0){
      a=s[i]/3;
      b=s[i]%3;
      if(s[i]==2){
        t+=1;
        printf("%d\n",t);
        break;
      }else if(s[i]==1){
        t=t+a;
        printf("%d\n",t);
        break;
      }else{
        t=t+a;
        s[i]=a+b;
      }
    }
  }return 0;
}
     
     

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论