c/c++快乐算法第二天

2023-07-11,,

c/c++感受算法乐趣(2)

开始时间2023-04-15 22:26:49

结束时间2023-04-16 00:18:16

前言:首先我们来回忆一下昨天接触了些什么算法题,1.1百钱百鸡问题,1.2借书方案知多少,1.3打鱼还是晒网,这三个题中有一个统一的思想就是枚举模拟,根据达成某种条件便解决了这类问题。这种暴力解决的方法很常见,也是问题通用的方法之一。bdw,说来惭愧今年的蓝桥杯我全是暴力做的,属实是送钱了。话不多说,咱们进入今天的趣味算法题。

第一章 趣味算法入门

第四题 抓交通肇事犯

一.问题描述

二.设计思路

  很明显无输入,求一个四位数,前两位相同(a=b),后两位相同(c=d),前两位与后两位不相同(a!=c),而且是一个平方数。可以用枚举模拟,i的范围在1~9,j的范围在0~9,并且i!=j,k=1100倍的i+11倍的j,然后判断k是不是一个平方数,如果是便输出车号。

三.流程图

四.源代码

#include<stdio.h>
int main()
{
int i,j,k,s;
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
k=1100*i+11*j;
for(s=32;s<100;s++)
{
if(k==(s*s))
{
printf("%d%d%d%d",i,i,j,j);
}
}
}
}
return 0;
}

五.运行结果

第五题 兔子产子问题

一.问题描述

二.设计思路

  这是一个经典的迭代循环问题,第一次做我还错以为是枚举模拟。1,1,2,3,5,8,13等等的斐波那契数列,由前两个数可以推出第三个数。这题无输出,最后输出斐波那契数列第三十个数;

三.流程图

四.源代码

#include<stdio.h>
int main()
{
long a=1,b=1,temp;
int i;
printf("%d\t%d\t",a,b);
for(i=0;i<28;i++)
{
temp=a+b;
b=a;
a=temp;
printf("%ld\t",temp);
}
return 0;
}

五.运行结果

第六题 牛顿迭代法求方程根

一.问题描述

二.设计思路

  这也是很经典的一道题目,迭代的本质是越来越接近方程的根,会用到math函数要加上math.h文件头。

  这个题在实验四函数程序设计中出现过,到时候咱们再细讲。

三.流程图

四.源代码

#include <stdio.h>
#include <math.h>
double f(double a,double b,double c,double d,double x)/*功能为运用牛顿迭代法求给定方程在x附近的一个实根*/
{
double x0,f,f1;
do
{
x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*x0*a+2*b)*x0+c;
x=x0-f/f1;
}while(fabs(x-x0)>=1e-3);
return(x);
}
int main(){
double a,b,c,d,x;
scanf("%lf%lf%lf%lf%lf",&a,&b,&c,&d,&x);
printf("%lf\n",f(a,b,c,d,x));
return 0;
}

五.运行结果

第七题 最佳存款问题

一.问题描述

二.设计思路

  本题无输入 ,从第五年初开始计算,进行四次循环,每次循环在上一次的基础上加上一千元并且除以利率;

三.流程图

四.源代码

#include<stdio.h>
int main()
{
int i=0;
double sum=0;
for(i=0;i<5;i++)
{
sum=(sum+1000.0)/(1+0.0063*12);
}
printf("%.2f",sum);
return 0;
}

五.运行结果

每日一mo:堂堂全国唯一一所以铁道命名大学的学生五一回家竟然还要抢票,它真的,我哭死......

c/c++快乐算法第二天的相关教程结束。

《c/c++快乐算法第二天.doc》

下载本文的Word格式文档,以方便收藏与打印。