编程中常遇到的数学问题1--(参考代码)

上传人:沈*** 文档编号:138192421 上传时间:2022-08-19 格式:DOC 页数:15 大小:90KB
收藏 版权申诉 举报 下载
编程中常遇到的数学问题1--(参考代码)_第1页
第1页 / 共15页
编程中常遇到的数学问题1--(参考代码)_第2页
第2页 / 共15页
编程中常遇到的数学问题1--(参考代码)_第3页
第3页 / 共15页
资源描述:

《编程中常遇到的数学问题1--(参考代码)》由会员分享,可在线阅读,更多相关《编程中常遇到的数学问题1--(参考代码)(15页珍藏版)》请在装配图网上搜索。

1、“蓝桥杯”软件设计大赛辅导林显宁-编程中常遇到的数学问题11.加减乘除举例如下,求 1100的和。方法A:int I , j;for (I = 1 ;I=100; I +)j += I;方法Bint I;I = (100 * (1+100) / 2小结:要记住一些常用的数学公式,比如求根公式、排列组合公式、面积公式、数列中的求和公式、勾股定律等。(1)求根公式:ax+bx+c=0(a0) (2)排列与排列数 :从n个不同元素中,任取m(mn)个元素(被取出的元素各不相同),按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列。从n个不同元素中取出m(mn)个元素的所有排列的个数,

2、叫做从n个不同元素中取出m个元素的排列数。用符号A(n,m) 表示。(3)组合与组合数:从n个不同元素中,任取m(mn)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(mn)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号c(n,m) 表示。实战练习: 【问题描述】自定义m,n两个数,求其组合,即m个数中选n个数进行组合,有多少组。 【输入格式】第一行为整数m,表示数的个数。第二行为整数n,表示从m个数中选n个数。【输出格式】输出一行,即m个数中选n个数进行组合有多少组。 样例输入52样例输出102.模运算 模运算是用来计算余数,它的

3、符号通常用%百分号来表示。所以23除以7等于3,余数是2。23 mod 7 = 2。应用:判断是奇数还是偶数的模运算 如果你想知道一个数是奇数还是偶数,用它mod 2来作模运算。如果结果是0,它就是偶数。如果结果是1,就是奇数。23 mod 2等于1,所以23是奇数,24 mod 2等于0,24是偶数。3.利率的计算例题:该存多少钱?假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少?*问题分析与算法设计 分析存钱和取钱的过程,可以采用倒推的方法。若第五年年底连本带息要取1000元,则要先求出第五

4、年年初银行存款的钱数: 第五年初存款=1000/(1+12*0.0063)依次类推可以求出第四年、第三年.的年初银行存款的钱数: 第四年年初存款=(第五年年初存款+1000)/(1+12*0.0063) 第三年年初存款=(第四年年初存款+1000)/(1+12*0.0063) 第二年年初存款=(第三年年初存款+1000)/(1+12*0.0063) 第一年年初存款=(第二年年初存款+1000)/(1+12*0.0063)通过以上过程就可以很容易地求出第一年年初要存入多少钱。*程序与程序注释#includevoid main()int i;float total=0;for(i=0;i5;i+)

5、 /*i 为年数,取值为04年*/total=(total+1000)/(1+0.0063*12); /*累计算出年初存款数额,第五次的计算 结果即为题解*/printf(He must save %.2f at first.n,total);*运行结果 He must save 4039.44 at first实战练习:利息计算小李年初在银行存款1千元(一年定期)。他计划每年年底取出100元救助失学儿童。假设银行的存款利率不变,年利率为3%,年底利息自动计入本金。下面的代码计算5年后,该账户上有多少存款。试填写缺失的代码。把填空的答案(仅填空处的答案,不包括题面)double money =

6、 1000;int n = 5;int i;for(i=0; ib,则a=a-b 若a12 ) 15123( 123 )1239( 93 ) 936( 63 )633( 3=3 )因此,3即为最大公约数穷举法有两整数a和b: i=1 若a,b能同时被i整除,则ti i+ 若 i a(或b),则t即为最大公约数,结束改进: i= a(或b) 若a,b能同时被i整除,则i即为最大公约数,结束 i-,再回去执行实战练习:(1) 最小公倍数求两个数字的最小公倍数是很常见的运算。比如,3和5的最小公倍是15。6和8的最小公倍数是24。下面的代码对给定的两个正整数求它的最小公倍数。请填写缺少的代码,使程序

7、尽量高效地运行。int f(int a, int b)int i;for(i=a; 【1】)if(i%b=0) return i;(2) 【问题描述】自定义a,b两个数,求最小公倍数与最大公约数。 【输入格式】第一行为整数a第二行为整数b【输出格式】输出两行行,第一行为a,b两个数的最小公倍数,第二行为a,b两个数的最大公约数。 样例输入68样例输出242(提示:可尝试使用三种不同的算法来求两个数的最大公约数。)(1)辗转相除法1. #include2. voidmain()/*辗转相除法求最大公约数*/3. 4. intm,n,a,b,t,c;5. printf(Inputtwointege

8、rnumbers:n);6. scanf(%d%d,&a,&b);7. m=a;n=b;8. while(b!=0)/*余数不为0,继续相除,直到余数为0*/9. c=a%b;a=b;b=c;10. printf(Thelargestcommondivisor:%dn,a);11. printf(Theleastcommonmultiple:%dn,m*n/a);12. (2)相差法:1. #include2. voidmain()/*相减法求最大公约数*/3. 4. intm,n,a,b,c;5. printf(Inputtwointegernumbers:n);6. scanf(%d,%d

9、,&a,&b);m=a;n=b;7. /*a,b不相等,大数减小数,直到相等为止。*/8. while(a!=b)9. if(ab)a=a-b;10. elseb=b-a;11. printf(Thelargestcommondivisor:%dn,a);12. printf(Theleastcommonmultiple:%dn,m*n/a);13. (3)穷举法:1. #include2. voidmain()/*穷举法求最大公约数*/3. 4. intm,n,a,b,i,t;5. printf(Inputtwointegernumbers:n);6. scanf(%d,%d,&a,&b);

10、m=a;n=b;7. for(i=1;i0;t-)14. if(a%t=0&b%t=0)break;思考题:*问题分析与算法 为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+ra

11、te8)i8其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:0=i8=20=i5=(20-8*i8)/50=i3=(20-8*i8-5*i5)/30=i2=(20-8*i8-5*i5-3*i3)/20=i1=20-8*i8-5*i5-3*i3-2*i2可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。*程序与程序注释#include#includevoid main()int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;float max=0,term;for(i8=0;i83;i8+) /*穷举所有可能

12、的存款方式*/for(i5=0;i5=(20-8*i8)/5;i5+)for(i3=0;i3=(20-8*i8-5*i5)/3;i3+)for(i2=0;i2max) max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8; printf(For maxinum profit,he should so save his money in a bank:n); printf( made fixed deposit for 8 year: %d timesn,n8); printf( made fixed deposit for5 year: %d timesn,n5); p

13、rintf( made fixed deposit for3 year: %d timesn,n3); printf( made fixed deposit for2 year: %d timesn,n2); printf( made fixed deposit for1 year: %d timesn,n1); printf( Toal: %.2fn,max); /*输出存款方式*/*运行结果For maxinum profit,he should so save his money in a bank: made fixed deposit for 8 year: 0times made

14、fixed deposit for5 year: 4times made fixed deposit for3 year: 0times made fixed deposit for2 year: 0times made fixed deposit for1 year: 0times Total:8841.01 可见最佳的存款方案为连续四次存5年期。*问题分析与算法设计 本问题实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。首先对五本书从1至5进行编号,然后使用穷举的方法。假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。*程序说明与

15、注释void main() int a,b,c,count=0; printf(There are diffrent methods for XM to distribute books to 3 readers:n); for(a=1;a=5;a+) /*穷举第一个人借5本书中的1本的全部情况*/ for(b=1;b=5;b+) /*穷举第二个人借5本书中的一本的全部情况*/ for(c=1;a!=b&c=5;c+) /*当前两个人借不同的书时,穷举第三个人借5本书 中的1本的全部情况*/ if(c!=a&c!=b) /*判断第三人与前两个人借的书是否不同*/ printf(count%8?

16、%2d:%d,%d,%d :%2d:%d,%d,%dn ,+count,a,b,c); /*打印可能的借阅方法*/*运行结果 There are diffrent methods for XM to distribute books to 3 readers: 1: 1,2,3 2: 1,2,4 3: 1,2,5 4: 1,3,2 5: 1,3,4 6: 1,3,5 7: 1,4,2 8: 1,4,3 9: 1,4,5 10:1,5,2 11:1,5,3 12:1,5,4 13:2,1,3 14:2,1,4 15:2,1,5 16:2,3,1 17:2,3,4 18:2,3,5 19:2,4,

17、1 20:2,4,3 21:2,4,5 22:2,5,1 23:2,5,3 24:2,5,4 25:3,1,2 26:3,1,4 27:3,1,5 28:3,2,1 29:3,2,4 30:3,2,5 31:3,4,1 32:3,4,2 33:3,4,5 34:3,5,1 35:3,5,2 36:3,5,4 37:4,1,2 38:4,1,3 39:4,1,5 40:4,2,1 41:4,2,3 42:4,2,5 43:4,3,1 44:4,3,2 45:4,3,5 46:4,5,1 47:4,5,2 48:4,5,3 49:5,1,2 50:5,1,3 51:5,1,4 52:5,2,1 5

18、3:5,2,3 54:5,2,4 55:5,3,1 56:5,3,2 57:5,3,4 58:5,4,1 59:5,4,2 60:5,4,33、核桃的数量1. #include2. #include3.4. /最小公倍数5. intLCM(intnum1,intnum2,intnum3)6. 7. intvalue=num1;8. while(value%num1!=0|value%num2!=0|value%num3!=0)9. 10. value+=num1;11. 12. returnvalue;13. 14.15. intmain()16. 17. intnum1,num2,num3;18. scanf(%d%d%d,&num1,&num2,&num3);19. printf(%dn,LCM(num1,num2,num3);20. return0;21.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!