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

//题目50:幼儿园给学生从前向后发糖果,每个学生得到的糖果成等差数列,前四个学生得到糖果的和是26,积是880,
//求前20名学生各自的糖果数目 #include<stdio.h>
#include<stdlib.h> //思路:求出前20个学生的糖果,必须知道一个学生的糖果和等差的差
//a1+a2+a3+a4=26,因为a2=a1+d,a3=a1+(3-1)d;即4a1+d+2d+3d=26;=>4a1+6d=26
//a1*a2*a3*a4=880;a1*(a1+d)*(a1+2d)*(a1+3d)=880
//糖果是个正整数,所以4a1+6d=26(即2a1+3d=13),a1和d全是整数,所以a的范围是0<a1<7;0<d<5
//因此使用双循环 void main(){
int a[] = { };
int d = ;
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
if (*j + *i == )
{
if (j*(j + i)*(j + *i)*(j + *i) == )
{
a[] = j;
d = i;
break;
}
continue;
}
}
}
for (int i = ; i < ; i++)
{
if (i==)
{
printf("%5d", a[i]);
}
else{
a[i] = a[] + i*d;
printf("%5d", a[i]);
}
}
system("pause");
} //总结:本题是练习是解决二元方程的编程解法,二元方程编程的关键是确定两个元的范围,用穷举法求出结果,
//好的编程在于缩小两个元的范围,本题元的范围可以更小,2a1+3d=13,a1=6其实也不符合条件,因为此时3d=1,d不可能是整数

//题目51:两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;
//且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数.求10000以内的全部亲密数. #include<stdio.h>
#include<stdlib.h>
#include<math.h> //思路:本题先求一个数A的所有因子,再将因子之和求出来,得到数B,判断数B的范围在不在10000之内,
//在求出B的因子之和是否等于A
//求出一个数所有因子 先求出数A的平方根,再用循环的方法求出所有的因子 int run1(int num){
int a = (int)sqrt((double)num)+;
int sum = ;
for (int i = ; i < a; i++)
{
if (num%i==)
{
sum = sum + i + num / i;
//sum += i;
}
}
return sum;
} void main(){
int a[] = { };
int index = ;
int temp = ;
for (int i = ; i < ; i++)
{
//获取数A的因子之和
temp = run1(i);
//判断数B的范围
//要求大于A,并且在10000以内,并且数A不等于数B
if (temp<i||temp>||(temp==i))
{
continue;
}
//求出数B的因子之和
if (i == run1(temp))
{
printf("%d==>%d\n",i,temp);
}
}
system("pause");
} //总结:本题难点在于求出数A的因子,关键在于缩小A因子的范围(int)sqrt((double)num)+1

C语言 百炼成钢17的更多相关文章

  1. C语言 百炼成钢19

    /* 题目55: 有一个字符串符合以下特征(”abcdef,acccd,eeee,aaaa,e3eeeee,sssss,";),要求写一个函数(接口),输出以下结果 1) 以逗号分割字符串, ...

  2. C语言 百炼成钢6

    //题目16:输入两个正整数m和n,求其最大公约数和最小公倍数. #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include< ...

  3. C程序设计语言练习题1-7

    练习1-7 编写一个打印EOF的值的程序. #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的函数,它不接受参数值. { // ...

  4. C语言基础(17)-作用域

    一个C语言变量的作用域可以是代码块 作用域,函数作用域或者文件作用域. 不推荐写法 int a; // 出现了语法的二义性,可能是声明也可能是定义,所以最好定义完成之后声明 void func();  ...

  5. C语言 百炼成钢3

    //题目7:用*号输出空心菱形图案 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> # ...

  6. C语言 百炼成钢2

    //题目4:输入某年某月某日,判断这一天是这一年的第几天? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<st ...

  7. C语言 百炼成钢1

    //题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...

  8. C语言 百炼成钢18

    //题目52:用递归打印以下图形 //* //*.*. //*..*..*.. //*...*...*...*... //*....*....*....*....*.... #include<s ...

  9. C语言 百炼成钢16

    //题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把 ...

随机推荐

  1. Android 设计模式一:EIT造型

    前言:首先不提造型,我们先来学习公式. 思绪回到于十七世纪中,牛顿提出了简单公式:F=ma:让人们能轻易理解物体运动的复杂<关系>. 再如,于二十世纪初,爱因斯坦发表了简单公式:E=MC平 ...

  2. Xcode 编译运行报错: CpResource /user/xxxx/ xxx Directory not empty

    之前遇到过相同的问题,总是记吃不记打,踩过的坑后面还会踩进去... 仅以次标记加深一下印象 错误特征RT 确认该类型错误是library或frameWork的search路径问题 首先找到编译错误的路 ...

  3. iOS--九宫格奥秘(UIView)(arc4random)

    下面程序主要实现,九宫格的模型,每个小UIView的颜色随机产生的,用到了 arc4random函数: ; ; ; ; ; i<; i++) { ; j<; j++) { UIView * ...

  4. 带删除的EditText

    在安卓开发中EditText是比较常用的控件之一,那我们平常看到EditText填写了内容之后右边会出现一个删除的按钮,这样可以方便用户对其中文本清空操作,是非常人性化的,我们可以重写EditText ...

  5. Xcode注释插件 VVDocumenter 升级Xcode6.x 失效的解决办法

    失效的原因其实是因为在插件的uuid列表中缺少自己的uuid,解决办法如下; 1,打开终端 输入命令: defaults read /Applications/Xcode.app/Contents/I ...

  6. ASP.NET操作Cookie

    1.生成Cookie public static void SetDataByCookie(string mainKey, string subKey, string value, string do ...

  7. 深入掌握Java中的enum

    对于要在程序中要表示有限种类的某事物,一般我们可以采用两种方式,一是使用:public static final String 常量:二是使用enum来表示.一般而言前者简单,但是不能够很好的提供更多 ...

  8. EasyUI ComboGrid 分页

    一.使用场景 下拉框可以很方便地为我们提供选择功能,通过下拉框我们可以便捷地选择某个值,而不需要手动输入.在EasyUI中有ComboGrid与之对应.ComboGrid既可以当中下拉框来使用,又可以 ...

  9. PHP添加Redis模块及连接

    上几篇文章介绍了Redis的安装及使用,下面将介绍php如何添加Redis扩展! php手册并没有提供Redis的类和方法,也没有提供相关的扩展模块,但我们可以在Redis的官网下载PHP的扩展,里面 ...

  10. 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单

    我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...