C语言 百炼成钢17

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 百炼成钢17相关的知识,希望对你有一定的参考价值。

//题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10,
//第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10,以此类推,
//求共有多少个学生,多少份糖果

#include<stdio.h>
#include<stdlib.h>

//思路:该题的要求是求一个糖果的数量,这个数量必须保证每个学生领取到的糖果都是整份数,并不要求所有学生分的糖果分数一样
//根据多定义变量,简化运算难度规则,定义有x个学生,y份糖果
//通过列举,找出规律:
//1+(y-1)*(1/10)  第一个学生领取的糖果数量
//抽象函数
//f(1)=1+(y-1)*(1/10) 
//因为每个学生领取到的糖果都是整份数,所以(y-1)*(1/10) 是整数,说明y-1是10的倍数
//那么y=10n+1
//通过枚举可以得到y的数量
//定义一个变量last,来存储糖果的剩余量,一直到last=0为止
//第一次 last=y-第一个学生领取的糖果数量,即last=y-1-(y-1)*(1/10) ---在枚举过程中y是个已知量
//第二次 last=last-第二个学生领取的糖果数量,即last=last-(2+(last-2)*(1/10))
//此时需要保证 last-2是10的倍数,即(last-2)%10==0,不满足这个条件,苹果的数量就要发生变化
//y=10n+1将n++
//还需要last>0
//当last==0时,获得正常的学生数量和糖果数量
//当last<0时,说明糖果数量不正常,需要将n++ ,再次循环
//第三次 lats=last-第三个学生领取的糖果数量,即last=last-(3+(last-3)*(1/10))

//不确定循环次数,使用while循环




void main(){
    //定义自增变量
    int n = 1;
    //定义每次糖果剩余数量
    int last = 10 * n + 1;
    //定义学生人数
    int index = 1;
    while (1){
        //一次都没有循环时,剩余糖果数量等于总糖果数量
        //开始循环
        //开始第一次
        //剩余苹果的数量必须是10的倍数
        if ((last - index)%10!=0)
        {
            //说明本次的糖果总数量不满足所有条件
            n++;
            //初始化所有数据
            last = 10 * n + 1;
            index = 1;
            //进行下一次循环
            continue;
        }
        last = last - (index + (last - index)/10);
        if (last == 0)
        {
            //说明本次的糖果总数量满足所有条件
            break;
        }
        else if (last>0)
        {
            index++;
        }
        else{
            //说明本次的糖果总数量不满足所有条件
            n++;
            //初始化所有数据
            last = 10 * n + 1;
            index = 1;
            //进行下一次循环
            continue;
        }
        if (n>100)
        {
            printf("看来我写的代码已经出错了!\n");
            break;
        }
        
    }
    if (index!=1)
    {
        printf("一共有%d个学生,糖果一共有%d份\n", index, 10 * n + 1);
    }
    system("pause");
}

 

技术分享

 

以上是关于C语言 百炼成钢17的主要内容,如果未能解决你的问题,请参考以下文章

C语言 百炼成钢11

C语言 百炼成钢16

C语言 百炼成钢21

C语言 百炼成钢24

C语言 百炼成钢23

C语言 百炼成钢22