c/c++快乐算法第二天
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:堂堂全国唯一一所以铁道命名大学的学生五一回家竟然还要抢票,它真的,我哭死......
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程