- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2012程序设计竞赛基础实训题详解
2012年程序设计竞赛基础实训详解
试1 不等式
对指定的正整数m,试求满足不等式
的正整数n。
输入正整数m(1m10000),输出正整数n所在的区间。
例如m=2,输出正整数n的区间为:[4,8]
测试数据:
(1) m=1000
(2) m=2012
程序设计:
// 解不等式,t1
#include stdio.h
#includemath.h
void main()
{ long c,d,i,m; double s;
printf( 请输入m: );scanf(%ld,m);
i=0;s=0;
while(sm)
{i=i+1;s=s+sqrt(i)/(2*i-1);}
c=i;
while(sm+1)
{i=i+1;s=s+sqrt(i)/(2*i-1);}
d=i-1;
printf(\n 满足不等式的正整数n为: [%ld,%ld] \n,c,d);
}
数据测试:
请输入m: 1000
满足不等式的正整数n为: [999550,1001549]
请输入m: 2012
满足不等式的正整数n为: [4047237,4051260]
变通:如果和式中增加有规律的“-”号,如何求解?
实训1:解不等式
其中m为从键盘输入的正整数,式中符号为二个“+”号后一个“-”号,即分母能被3整除时为“-”。
输入正整数m,输出满足不等式的n。
测试数据: (1) m=4 (2) m=7
试2 不定方程
试求四元二次不定方程
在指定区间[a,b]的正整数解。
输入正整数a,b(1≤ab10000), 输出方程在该区间[a,b]内的正整数解x,y,z,w(约定a≤xyzw≤b)的组数。
例如输入a,b: 1,10;求得方程在[1,10]有2组解:{1,4,8,9},{2,3,6,7},输出:2。
测试数据:
(1) 600,1000
(2) 1000,2012
求解要点:
设指定区间为[a,b],一般设置4重循环在指定区间内穷举x、y、z、w(xyz),若满足方程式则用n统计级数。
程序设计:
// 求指定区间内不定方程解的组数 t21
#include stdio.h
#include math.h
void main()
{long a,b,n,x,y,z,w;
printf( 请输入区间[a,b]的上下限a,b: );
scanf(%ld,%ld,a,b);
n=0;
for(x=a;x=b-3;x++)
for(y=x+1;y=b-2;y++)
for(z=y+1;z=b-1;z++)
for(w=z+1;w=b;w++)
if(x*x+y*y+z*z==w*w) // 满足不定方程式时统计
n++;
if(n==0) printf( 方程在该区间内没有解。\n);
else printf( 方程在[%ld,%ld]内有%ld组解。 \n,a,b,n);
}
优化循环参数:
// 求指定区间内不定方程解的组数 t22
#include stdio.h
#include math.h
void main()
{long a,b,n,x,y,z,w;
printf( 请输入区间[a,b]的上下限a,b: );
scanf(%ld,%ld,a,b);
n=0;
for(x=a;x=sqrt(b*b/3);x++)
for(y=x+1;y=sqrt((b*b-x*x)/2);y++)
for(z=y+1;z=sqrt(b*b-x*x-y*y);z++)
for(w=z+1;w=b;w++)
if(x*x+y*y+z*z==w*w) // 满足不定方程式时统计
n++;
if(n==0) printf( 方程在该区间内没有解。\n);
else printf( 方程在[%ld,%ld]内有%ld组解。 \n,a,b,n);
}
数据测试:
请输入区间[a,b]的上下限a,b: 500,1000
方程在[500,1000]内有131组解。
请输入区间[a,b]的上下限a,b: 1000,2012
方程在[1000,2012]内有617组解。
精简循环设计:
设指定区间为[a,b],精简w循环,设置3重循环在指定区间内穷举x,y,z(xyz),应用方程式计算d=x*x+y*y+z*z, w=sqrt(d):
若wb或w不满足方程,返回;否则用n统计级数。
// 求指定区间内不定方程解
您可能关注的文档
最近下载
- 2025湖南株洲市工会社会工作者招聘30人笔试备考试题及答案解析.docx VIP
- 2023考试软件评测师真题及答案完整版.docx VIP
- 机务基础维修执照考试资料系列 M11 .pdf VIP
- 患者跌倒、坠床等意外事件的防范制度、措施、报告制度.docx VIP
- 2025年湖南株洲市工会社会工作者招聘30人笔试备考试题及答案解析.docx VIP
- 教师资格考试初中学科知识与教学能力语文试卷及解答参考.docx VIP
- 部编版八年级道德与法治上册3.1《维护秩序》优质教案.doc
- 冷链医疗器械培训试题(含答案).docx VIP
- 2025湖南株洲市工会社会工作者招聘30人笔试备考题库及答案解析.docx VIP
- 乾坤木业业务流程诊断.ppt VIP
文档评论(0)