Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4253455
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-05-14 09:06:45

    父亲将2 520个桔子分给6个儿子。分完后父亲说:“老大将分给你的桔子的1/8分给老二;老二拿到后连同原先的桔子分1/7给老三;老三拿到后连同原先的桔子分1/6给老四;老四拿到后连同原先的桔子分1/5给老五;老五拿到后连同原先的桔子分1/4给老六;老六拿到后连同原先的桔子分1/3给老大”。在分桔子的过程中并不存在分得分数个桔子的情形,结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子。


  1. #include <stdio.h>

  2. #define PEOPLE_SIZE 6
  3. #define ORAGE_SIZE 2520

  4. void process(int *a,int *b,int n);

  5. int main(int argc,char *argv[])
  6. {
  7.     int s1,s2,s3,s4,s5,s6;  //分完桔子后,老大到老六的桔子数
  8.     s1=s2=s3=s4=s5=s6=ORAGE_SIZE/PEOPLE_SIZE;

  9.     process(&s6,&s1,3); //老六分给老大
  10.     process(&s5,&s6,4); //老五分给老六
  11.     process(&s4,&s5,5);  ....
  12.     process(&s3,&s4,6);
  13.     process(&s2,&s3,7);
  14.     process(&s1,&s2,8);

  15.     printf("s1=%d, s2=%d, s3=%d, s4=%d, s5=%d, s6=%d \n",s1,s2,s3,s4,s5,s6);
  16. }

  17. void process(int *a,int *b,int n)
  18. {
  19.     int pro_a;          //老六没有分给老大的桔子数
  20.     pro_a=*a*n/(n-1)
  21.     *b=*b-(pro_a-*a);   //返回,原先老六的桔子数
  22.     *a=*a+(pro_a-*a);   //返回,原先老大的桔子数
  23. }

  1. ywx@yuweixian:~/yu/professional/3$ ./or
  2. s1=240, s2=460, s3=434, s4=441, s5=455, s6=490


阅读(891) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~