欢迎来到天天文库
浏览记录
ID:40983103
大小:191.44 KB
页数:25页
时间:2019-08-12
《程序设计大赛题目解答》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、程序设计大赛题目解答1.求代数和设n为正整数,求和式中各项符号为二正一负,分母符号为一正一负。正整数n从键盘输入,输出和s四舍五入精确到小数点后5位。输入n=100输出:输入n=2011输出: //求代数和#include#includevoidmain(){longj,n;doublets,s;printf("请输入n:");scanf("%d",&n);j=0;ts=0;s=0;while(j2、各项的分母elsets=ts+(double)1/j;if(j%3==0)s=s-sqrt(j)/ts;//求代数和selses=s+sqrt(j)/ts;}printf("s=%.5f",s);} 请输入n:100s=324.74013请输入n:2011s=28924.48725 变通:设2#includevoidmain(){intn,n1=1;doublesum1=1,sum2=1,g;printf("请输3、入n:");scanf("%d",&n);while(n14、00,m=100输出: 幂积序列复杂在“积”字上,即幂积序列的项既可以是2的幂,3的幂,也可以是这双幂的乘积。我们应用枚举求解。(1)设计要点集合元素由2的幂与3的幂及其乘积组成,设元素从小到大排序的第k项为f(k)。显然,f(1)=1,f(2)=2。设置a循环,a从3开始递增1至n,对每一个a(赋值给j),逐次试用2试商,然后逐次试用3试商。试商后若j>1,说明原a有2,3以外的因数,不属于该序列。若j=1,说明原a只有2,3的因数,属于该序列,把a赋值给序列第k项。由于实施从小到大测试赋值,所得项无疑是从小到5、大的序列。当a达到指定的n,退出循环,输出指定项f(m)。(2)枚举程序设计//幂序列2^x*3^y枚举求解#includevoidmain(){intk,m;longa,j,n,f[1000];printf("计算不大于n的项数,请指定n:");scanf("%ld",&n);printf("输出序列的第m项,请指定m:");scanf("%d",&m);f[1]=1;f[2]=2;k=2;for(a=3;a<=n;a++){j=a;while(j%2==0)j=j/2;//反复用2试商whil6、e(j%3==0)j=j/3;//反复用3试商if(j==1){k++;f[k]=a;}//用a给f[k]赋值}printf("幂序列中不大于%ld的项数为:%d",n,k);if(m<=k)printf("从小到大排序的第%d项为:%ld",m,f[m]);elseprintf("所输序号m大于序列的项数!");}(3)程序运行示例n=10000,m=50输出:67,2304n=10000000,m=100输出:190,93312 变通:计算集合在指定区间[n1,n2]中有多少个元素? 3.喝汽水定价7、1瓶汽水4角8分钱,同时规定3个空瓶可换回1瓶汽水,或20个空瓶可换回7瓶汽水。例如用5元买10瓶汽水,然后用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。这样,5元可喝到15瓶汽水。今有n元钱买汽水,最多可喝m瓶汽水。n=100,m=n=2011,m= #includevoidmain(){intn1=2011,n,sum,i;doublen2;n2=n8、1/0.48;n=n2;sum=n;while(n>20){i=n/20;sum+=i*7;n=i*7+n%20;}while(n>=2){i=n/3;sum+=i;n=i+n%3;if(n==2){sum++;break;}}printf("%d",sum);} 原题:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,
2、各项的分母elsets=ts+(double)1/j;if(j%3==0)s=s-sqrt(j)/ts;//求代数和selses=s+sqrt(j)/ts;}printf("s=%.5f",s);} 请输入n:100s=324.74013请输入n:2011s=28924.48725 变通:设2#includevoidmain(){intn,n1=1;doublesum1=1,sum2=1,g;printf("请输
3、入n:");scanf("%d",&n);while(n14、00,m=100输出: 幂积序列复杂在“积”字上,即幂积序列的项既可以是2的幂,3的幂,也可以是这双幂的乘积。我们应用枚举求解。(1)设计要点集合元素由2的幂与3的幂及其乘积组成,设元素从小到大排序的第k项为f(k)。显然,f(1)=1,f(2)=2。设置a循环,a从3开始递增1至n,对每一个a(赋值给j),逐次试用2试商,然后逐次试用3试商。试商后若j>1,说明原a有2,3以外的因数,不属于该序列。若j=1,说明原a只有2,3的因数,属于该序列,把a赋值给序列第k项。由于实施从小到大测试赋值,所得项无疑是从小到5、大的序列。当a达到指定的n,退出循环,输出指定项f(m)。(2)枚举程序设计//幂序列2^x*3^y枚举求解#includevoidmain(){intk,m;longa,j,n,f[1000];printf("计算不大于n的项数,请指定n:");scanf("%ld",&n);printf("输出序列的第m项,请指定m:");scanf("%d",&m);f[1]=1;f[2]=2;k=2;for(a=3;a<=n;a++){j=a;while(j%2==0)j=j/2;//反复用2试商whil6、e(j%3==0)j=j/3;//反复用3试商if(j==1){k++;f[k]=a;}//用a给f[k]赋值}printf("幂序列中不大于%ld的项数为:%d",n,k);if(m<=k)printf("从小到大排序的第%d项为:%ld",m,f[m]);elseprintf("所输序号m大于序列的项数!");}(3)程序运行示例n=10000,m=50输出:67,2304n=10000000,m=100输出:190,93312 变通:计算集合在指定区间[n1,n2]中有多少个元素? 3.喝汽水定价7、1瓶汽水4角8分钱,同时规定3个空瓶可换回1瓶汽水,或20个空瓶可换回7瓶汽水。例如用5元买10瓶汽水,然后用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。这样,5元可喝到15瓶汽水。今有n元钱买汽水,最多可喝m瓶汽水。n=100,m=n=2011,m= #includevoidmain(){intn1=2011,n,sum,i;doublen2;n2=n8、1/0.48;n=n2;sum=n;while(n>20){i=n/20;sum+=i*7;n=i*7+n%20;}while(n>=2){i=n/3;sum+=i;n=i+n%3;if(n==2){sum++;break;}}printf("%d",sum);} 原题:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,
4、00,m=100输出: 幂积序列复杂在“积”字上,即幂积序列的项既可以是2的幂,3的幂,也可以是这双幂的乘积。我们应用枚举求解。(1)设计要点集合元素由2的幂与3的幂及其乘积组成,设元素从小到大排序的第k项为f(k)。显然,f(1)=1,f(2)=2。设置a循环,a从3开始递增1至n,对每一个a(赋值给j),逐次试用2试商,然后逐次试用3试商。试商后若j>1,说明原a有2,3以外的因数,不属于该序列。若j=1,说明原a只有2,3的因数,属于该序列,把a赋值给序列第k项。由于实施从小到大测试赋值,所得项无疑是从小到
5、大的序列。当a达到指定的n,退出循环,输出指定项f(m)。(2)枚举程序设计//幂序列2^x*3^y枚举求解#includevoidmain(){intk,m;longa,j,n,f[1000];printf("计算不大于n的项数,请指定n:");scanf("%ld",&n);printf("输出序列的第m项,请指定m:");scanf("%d",&m);f[1]=1;f[2]=2;k=2;for(a=3;a<=n;a++){j=a;while(j%2==0)j=j/2;//反复用2试商whil
6、e(j%3==0)j=j/3;//反复用3试商if(j==1){k++;f[k]=a;}//用a给f[k]赋值}printf("幂序列中不大于%ld的项数为:%d",n,k);if(m<=k)printf("从小到大排序的第%d项为:%ld",m,f[m]);elseprintf("所输序号m大于序列的项数!");}(3)程序运行示例n=10000,m=50输出:67,2304n=10000000,m=100输出:190,93312 变通:计算集合在指定区间[n1,n2]中有多少个元素? 3.喝汽水定价
7、1瓶汽水4角8分钱,同时规定3个空瓶可换回1瓶汽水,或20个空瓶可换回7瓶汽水。例如用5元买10瓶汽水,然后用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。这样,5元可喝到15瓶汽水。今有n元钱买汽水,最多可喝m瓶汽水。n=100,m=n=2011,m= #includevoidmain(){intn1=2011,n,sum,i;doublen2;n2=n
8、1/0.48;n=n2;sum=n;while(n>20){i=n/20;sum+=i*7;n=i*7+n%20;}while(n>=2){i=n/3;sum+=i;n=i+n%3;if(n==2){sum++;break;}}printf("%d",sum);} 原题:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,
此文档下载收益归作者所有