算法竞赛入门经典第二章习题答案
2014-09-01 20:54
260 查看
习题2-1 位数
输入一个不超过10^9的正整数,输出它的位数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,d=0;
scanf("%d",&n);
while(n>0)
{
n=n/10;
d++;
}
printf("%d\n",d);
system("pause");
return 0;
}
习题2-2 水仙花数
输出100-999中的所有水仙花数。若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)
printf("%d%d%d\n",a,b,c);
system("pause");
return 0;
}
习题2-3 韩信点兵
输入3个非负整数a,b,c,表示每种队形的人数,(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100.
样例输入:2 1 6
样例输出:41
样例输入:2 1 3
样例输出:No answer
#include<stdio.h>
int main()
{
int a,b,c,n;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
for(int i=10;i<=100;i++)
if(i%3==a&&i%5==b&&i%7==c)
{
n=i;
printf("%d\n",n);
break;
}
else
printf("No answer");
}
return 0;
}
习题2-4倒三角
输入正整数N<=20,输出一个n层的倒三角。例如输入n=5,输出
#########
#######
#####
###
#
#include<stdio.h>
int main()
{
int n,i,j,count;
while(scanf("%d",&n)!=EOF)
{
count=2*n-1;
for(i=0;i<n;i++){
for(j=0;j<i;j++) printf(" ");
for(j=0;j<count;j++) printf("#");
printf("\n");
count=count-2;
}
}
return 0;
}
习题2-5统计
输入一个正整数n,然后读取n个正整数a1,a2,a3,...,an,最后再读取一个正整数m。统计a1,a2,a3,...,an,中有多少个整数的值小于m 。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m,count=0;
int a[1000];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int i=0;i<n;i++){
if(a[i]<m)
count++;
}
printf("%d\n",count);
system("pause");
return 0;
}
习题2-6 调和级数
输入正整数n,输出H(n)=1+1/2+1/3+...+1/n的值,保留3位小数。
#include<stdio.h>
int main()
{
int n;
double s=0.0;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++){
s=s+1.0/i;}
printf("%.3lf\n",s);
}
return 0;
}
习题2-7 近似计算
计算 /4=1-1/3+1/5-1/7+....,直到最后一项小于10^-6.
#include<stdio.h>
#include<stdlib.h>
int main()
{
double sum=0;
for(int i=0; ;i++)
{
double t=1.0/(2*i+1);
if(i%2==0)
sum+=t;
else
sum-=t;
if(t< 1e-6)
break;
}
printf("%.6lf\n",sum);
system("pause");
return 0;
}
习题2-8 子序列的和
输入两个正整数n<m<10^6,输出1/n^2+1/(n+1)^2+...+1/m^2,保留5位小数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m,i;
double s=0;
scanf("%d %d",&n,&m);
for(i=n;i<=m;i++)
s+=1.0/i/i;
printf("%.5lf\n",s);
system("pause");
return 0;
}
习题2-9 分数化小数
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d.",a/b);
a=a%b;
while(c--)
{
a=a*10;
int q=a/b;
if(c==0&&(a%b)*10/b>=5)
q++;
printf("%d",q);
a%=b;
}
printf("\n");
system("pause");
return 0;
}
习题2-10 排列
用1,2,3……,9组成3个三位数abc,def,ghi.每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有的解。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y,z,a[10]={0};
for(x=100;x<333;x++)
{
y=2*x;
z=3*x;
a[x/100]=a[x/10%10]=a[x%10]=1;
a[y/100]=a[y/10%10]=a[y%10]=1;
a[z/100]=a[z/10%10]=a[z%10]=1;
int i,s=0;
for(i=0;i<10;i++)
s+=a[i];
if(s==9)
printf("%d\t%d\t%d\n",x,y,z);
for(i=0;i<10;i++)
a[i]=0;
}
system("pause");
return 0;
}
输入一个不超过10^9的正整数,输出它的位数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,d=0;
scanf("%d",&n);
while(n>0)
{
n=n/10;
d++;
}
printf("%d\n",d);
system("pause");
return 0;
}
习题2-2 水仙花数
输出100-999中的所有水仙花数。若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)
printf("%d%d%d\n",a,b,c);
system("pause");
return 0;
}
习题2-3 韩信点兵
输入3个非负整数a,b,c,表示每种队形的人数,(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100.
样例输入:2 1 6
样例输出:41
样例输入:2 1 3
样例输出:No answer
#include<stdio.h>
int main()
{
int a,b,c,n;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
for(int i=10;i<=100;i++)
if(i%3==a&&i%5==b&&i%7==c)
{
n=i;
printf("%d\n",n);
break;
}
else
printf("No answer");
}
return 0;
}
习题2-4倒三角
输入正整数N<=20,输出一个n层的倒三角。例如输入n=5,输出
#########
#######
#####
###
#
#include<stdio.h>
int main()
{
int n,i,j,count;
while(scanf("%d",&n)!=EOF)
{
count=2*n-1;
for(i=0;i<n;i++){
for(j=0;j<i;j++) printf(" ");
for(j=0;j<count;j++) printf("#");
printf("\n");
count=count-2;
}
}
return 0;
}
习题2-5统计
输入一个正整数n,然后读取n个正整数a1,a2,a3,...,an,最后再读取一个正整数m。统计a1,a2,a3,...,an,中有多少个整数的值小于m 。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m,count=0;
int a[1000];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int i=0;i<n;i++){
if(a[i]<m)
count++;
}
printf("%d\n",count);
system("pause");
return 0;
}
习题2-6 调和级数
输入正整数n,输出H(n)=1+1/2+1/3+...+1/n的值,保留3位小数。
#include<stdio.h>
int main()
{
int n;
double s=0.0;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++){
s=s+1.0/i;}
printf("%.3lf\n",s);
}
return 0;
}
习题2-7 近似计算
计算 /4=1-1/3+1/5-1/7+....,直到最后一项小于10^-6.
#include<stdio.h>
#include<stdlib.h>
int main()
{
double sum=0;
for(int i=0; ;i++)
{
double t=1.0/(2*i+1);
if(i%2==0)
sum+=t;
else
sum-=t;
if(t< 1e-6)
break;
}
printf("%.6lf\n",sum);
system("pause");
return 0;
}
习题2-8 子序列的和
输入两个正整数n<m<10^6,输出1/n^2+1/(n+1)^2+...+1/m^2,保留5位小数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m,i;
double s=0;
scanf("%d %d",&n,&m);
for(i=n;i<=m;i++)
s+=1.0/i/i;
printf("%.5lf\n",s);
system("pause");
return 0;
}
习题2-9 分数化小数
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d.",a/b);
a=a%b;
while(c--)
{
a=a*10;
int q=a/b;
if(c==0&&(a%b)*10/b>=5)
q++;
printf("%d",q);
a%=b;
}
printf("\n");
system("pause");
return 0;
}
习题2-10 排列
用1,2,3……,9组成3个三位数abc,def,ghi.每个数字恰好使用一次,要求abc:def:ghi=1:2:3.输出所有的解。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y,z,a[10]={0};
for(x=100;x<333;x++)
{
y=2*x;
z=3*x;
a[x/100]=a[x/10%10]=a[x%10]=1;
a[y/100]=a[y/10%10]=a[y%10]=1;
a[z/100]=a[z/10%10]=a[z%10]=1;
int i,s=0;
for(i=0;i<10;i++)
s+=a[i];
if(s==9)
printf("%d\t%d\t%d\n",x,y,z);
for(i=0;i<10;i++)
a[i]=0;
}
system("pause");
return 0;
}
相关文章推荐
- 算法竞赛入门经典第二版课后习题答案第二章
- 算法竞赛入门经典第二章习题
- 算法竞赛入门经典课后习题答案第一章
- 算法导论第二章习题答案(第三版) Introduction to Algorithm
- C++Primer第五版 第二章习题答案(31~41)
- 数据库系统概论课后习题答案第二章
- 数据库系统概念(第六版)习题答案——第二章关系模型介绍
- 算法竞赛入门经典第4章 【uvaoj习题(一)】
- 鸟哥的Linux私房菜基础学习篇(第二版)第二章课后习题与答案
- 数据库系统概论课后习题答案第二章
- 数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第二章课后习题答案
- {算法竞赛入门经典}第二章 习题解答及例题小结
- 算法竞赛入门经典第3章【小结与习题】
- 《编程珠玑》读书笔记2------------第二章习题及个人答案
- python核心编程习题答案(第二章)
- 算法竞赛入门经典课后习题答案:第一章(C++解法)
- 02 快学scala第二章习题答案
- 微软经典习题和答案
- python编程从入门到实践第二章习题答案
- 第二章 计算机网络基础知识习题参考答案