龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

全国计算机编程大赛复赛试题2

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
某幼儿园按如下方法依次给A,B,C,D,E五个小孩发糖果。将全部糖果的一半再加二分之一块糖果发给第一个小孩;将剩下糖果的三分之一再加三分之一块糖果发给第二个小孩;将剩下

某幼儿园按如下方法依次给A,B,C,D,E五个小孩发糖果。将全部糖果的一半再加二分之一块糖果发给第一个小孩;将剩下糖果的三分之一再加三分之一块糖果发给第二个小孩;将剩下糖果的四分之一再加四分之一块糖果发给第三个小孩;将剩下糖果的五分之一再加五分之一块糖果发给第四个小孩;将最后剩下的11块糖果发给第五个小孩。每个小孩得到的糖果数均为整数。试确定原来共有多少块糖果?每个小孩各得到多少块糖果?

   要求结果的输出格式为

   sum=糖果总数

   xa=A得到的糖果数

   xb=B得到的糖果数

   xc=C得到的糖果数

   xd=D得到的糖果数

   xe=E得到的糖果数

  

以下是我为实现以上要求而写的,完全能正确实现,请欣赏,假如看了后你有所改进或有别的实现妙方,就请贴出来共同学习与分享吧。让我们为本网站更具实用,可读性强而努力!

#include "stdio.h"

  main()

  { FILE *fp;

   int sum,xa,xb,xc,xd,xe;

if((fp=fopen("58114_2.dat","w"))==NULL) /* 创建结果文件 */

   { printf("cannot open this file.

");

   exit(0);

   }

sum=0;

   while(1)

   { if(60*sum-((sum+1)*30+(sum+1)*10+(sum+1)*5+(sum+1)*3)==660) break; /* 这用了穷举法,利用了总数减前四人等于第五人的等价关系,等式两边同乘了60 */

   sum=sum++;

   }

  xa=(sum+1)/2; /* 以下是求各自所得糖数 */

  xb=((sum-xa)+1)/3;

  xc=((sum-xa-xb)+1)/4;

  xd=((sum-xa-xb-xc)+1)/5;

  xe=sum-xa-xb-xc-xd;

fprintf(fp,"sum=%d

xa=%d

xb=%d

xc=%d

xd=%d

xe=%d",sum,xa,xb,xc,xd,xe); /* 结果写进文件 */

  fclose(fp);

  }

  

精彩图集

赞助商链接