没有合适的资源?快使用搜索试试~ 我知道了~
首页C语言竞赛编程技巧:求最大约数与高次方数尾数
C语言竞赛编程技巧:求最大约数与高次方数尾数
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 14 浏览量
更新于2024-07-01
收藏 47KB DOCX 举报
该文档包含了C语言竞赛练习题,旨在考察参赛者的编程能力和对C语言基础的理解。第一部分题目要求找到555555的约数中最大的三位数,通过理解约数的定义,设计了从999到100的循环,逐步检查每个数是否能整除给定数字,一旦找到符合条件的约数,就立即输出并结束循环。程序利用`%`运算符判断除法余数,确保找到最大的三位数。 第二部分挑战是计算13的13次方的最终三位数,虽然可以直接进行多次乘法,但因为整数溢出的问题,这种方法不可行。实际上,只需关注乘数和被乘数的后三位即可,利用这个规律,设计了一个简单的循环,每次将当前的乘积后三位与新的乘数相乘,然后对1000取模,这样能得到最终结果。程序中通过`%1000`操作实现了这个目的。 这两道题目展示了C语言的基本控制结构(如for循环)和算术运算(如取模运算),同时也涉及到了数值计算和优化策略。参赛者需要熟练运用这些概念来解决问题,并在规定的时间内完成编写和调试代码。通过解决这类题目,参赛者不仅可以检验自身的编程技巧,还能加深对C语言特性和数学原理的理解。
资源详情
资源推荐
第 10 页
8. 怎样存钱利最大
假设银行整存整取存款不同期限的月息利率分别为:
0.63% 期限=1 年
0.66% 期限=2 年
0.69% 期限=3 年
0.75% 期限=5 年
0.84% 期限=8 年
利息=本金*月息利率*12*存款年限。
现在某人手中有 2000 元钱,请通过计算选择一种存钱方案,
使得钱存入银行 20 年后得到的利息最多(假定银行对超过存款
期限的那一部分时间不付利息)。
*问题分析及算法
为了得到最多的利息,存入银行的钱应在到期时立刻取出来,
然后立即将原来的本金和利息加起来再作为新的本金存入银行,
这样不断地滚动直到满 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
+rate8)i8
其中 rateN 为对应存款年限的利率。依据题意还可得到以下限制
条件:
0<=i8<=2
0<=i5<=(20-8*i8)/5
0<=i3<=(20-8*i8-5*i5)/3
0<=i2<=(20-8*i8-5*i5-3*i3)/2
0<=i1=20-8*i8-5*i5-3*i3-2*i2
可以用穷举法穷举全部的 i8, i5, i3, i2 和 i1 的组合,
第 11 页
代入求本利的公式计算出最大值,就是最佳存款方案。
*程序及程序注释
#include<stdio.h>
#include<math.h>
void main()
int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
float max=0,term;
for(i8=0;i8<3;i8++) /*穷举全部可能的存款方式*/
for(i5=0;i5<=(20-8*i8)/5;i5++)
for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
i1=20-8*i8-5*i5-3*i3-2*i2;
term=2000.0*pow((double)(1+0.0063*12),(double)i1)
*pow((double)(1+2*0.0063*12),(double)i2)
*pow((double)(1+3*0.0069*12),(double)i3)
*pow((double)(1+5*0.0075*12),(double)i5)
*pow((double)(1+8*0.0084*12),(double)i8);
/*计算到期时
的本利合计*/
if(term>max)
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
第 12 页
times\\n",n8);
printf(" made fixed deposit for 5 year: %d
times\\n",n5);
printf(" made fixed deposit for 3 year: %d
times\\n",n3);
printf(" made fixed deposit for 2 year: %d
times\\n",n2);
printf(" made fixed deposit for 1 year: %d
times\\n",n1);
printf(" Toal:
%.2f\\n",max);
/*输出存
款方式*/
*运行结果
For maxinum profit,he should so save his money in a bank:
made fixed deposit for 8 year: 0times
made fixed deposit for 5 year: 4times
made fixed deposit for 3 year: 0times
made fixed deposit for 2 year: 0times
made fixed deposit for 1 year: 0times
Total:8841.01
可见最佳的存款方案为连续四次存 5 年期。
9. 捕鱼和分鱼
A, B, C, D, E 五个人在某天夜里合伙去捕鱼,到第二
天凌晨时都乏累不堪,于是各自找地方睡觉。日上三杆,A 第一
个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一
份。B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保
持走自己的一份。C, D, E 依次醒来,也按同样的方法拿走鱼。
问他们合伙至少捕了多少条鱼?
*问题分析及算法设计
剩余57页未读,继续阅读
kfcel5889
- 粉丝: 3
- 资源: 5万+
下载权益
电子书特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功