033:递归数列类别:函数与递归
程序类型:代码片段
时间限制:2S
内存限制:10000Kb
问题描述
一个数列A定义如下
A(1)=1,
A(2)=1/(1+A(1)),
A(3)=1/(1+A(2)),
……
A(n)=1/(1+A(n-1))。
定义一个函数function用来计算数列的第第n项的值,函数声明如下:
double function(int n);
输入说明:
输入为1个正整数n,n<=10。
输出说明
函数输出数列A第n项的值,结果小数点后保留6位有效数字,多余部分四舍五入。
输入样例
5
输出样例
0.625000
提示
所有浮点数使用双精度浮点来运算!!!
#includedouble function(int n) { if (n==1) return 1; return 1/(1+function(n-1)); } int main(void) { int n; scanf("%d",&n); printf("%.6f",function(n)); return 0; }
034:水仙花数类别
流程控制时间限制
2S内存限制
10000Kb问题描述
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)。
定义一个函数int function(int a, int b),计算区间[a,b]或区间[b,a]上水仙花数的个数。输入说明
输入由两个整数a和b构成,a和b之间用空格分隔。0输出说明
输出区间[a,b]或区间[b,a]上水仙花数的个数。输入样例
3 1000输出样例
4提示
a,b的位数n可能小于3
#include#include int function(int a,int b) { int max=a,min=b; int count=0; if (b>a) { max=b; min=a; } if (min<100) min=100; for (int i=min;i<=max;i++) { int sum=0; int wei=0; for (int j=1;j<=i*10;j=j*10) { if (i/j!=0) { wei=wei+1; } } int k=1; while (i/k!=0) { sum=sum+(int)pow((i/k)%10,wei); k=k*10; } if (sum==i) count=count+1; } return count; } int main(void) { int a,b; scanf("%d %d",&a,&b); printf("%d",function(a,b)); return 0; }
035:歌德巴赫猜想类别:函数与递归
时间限制:2S
内存限制:10000Kb
问题描述:
德巴赫猜想:
任意一个大偶数都能分解为两个素数的和,
对与输入的一个正偶数,写一个程序来验证歌德巴赫猜想。
由于每个正偶数可能分解成多组素数和,仅输出分解值分别是最小和最大素数的一组,按从小到大顺序输出。输入说明
输入一个正偶数n,1输出说明
输出分解出的两个最小和最大素数。输入样例
10输出样例
3 7
#includeint function(int n) { for (int i=2;i<=n;i++) { int tempa=0,tempb=0; for (int j=2;j<=i;j++) { if (i%j==0) { tempa=tempa+1; } if (tempa>1) break; } for (int k=2;k<=n-i;k++) { if ((n-i)%k==0) { tempb=tempb+1; } if (tempa>1) break; } if (tempa==1 && tempb==1) { return i; break; } } } int main(void) { int n; scanf("%d",&n); printf("%d %d",function(n),n-function(n)); return 0; }
044:斐波纳契数列类别:函数与递归
时间限制:2S内存限制:256Kb
问题描述
已知一个斐波纳契数列中的数字依次为1, 1, 2, 3, 5, 8, 13, 21, 34, 55 … 。请判断该数列中第n个数字(n从1开始计数)是不是素数。输入说明
输入一个整数n(1输出说明
判断斐波纳契数列中的第n个数字是不是素数,如果是输出yes,否则输出该数字。输入样例
样例1输入
6
样例2输入
4输出样例
样例1输出
8
样例2输出
yes
#includeint funaction(int n) { if (n==1 || n==2) return 1; return funaction(n-1)+funaction(n-2); } int shushu(int n) { int tar=0; for (int i=1;i 055:数列求和类别
函数与递归时间限制
1S内存限制
1000Kb问题描述
有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13,......An/Bn
A1=2,A2=3,An=An-1+An-2;
B1=1,B2=2,Bn=Bn-1+Bn-2。
求出这个数列的前n(2<=n<=30)项之和。输入说明
一个整数n输出说明
输出一个实数表示数列前n项之和,结果保留2位小数(四舍五入)输入样例
2
输出样例
3.50#includeint funactionA(int n) { if (n==1) return 2; if (n==2) return 3; return funactionA(n-1)+funactionA(n-2); } int funactionB(int n) { if (n==1) return 1; if (n==2) return 2; return funactionB(n-1)+funactionB(n-2); } double funactionSUM(int n) { double sum=0.0; for (int i=1;i<=n;i++) sum=sum+(double)funactionA(i)/funactionB(i); return sum; } int main(void) { int n; scanf("%d",&n); printf("%.2f",funactionSUM(n)); return 0; } 057:Fibonacci数列类别:函数与递归
时间限制:2S
内存限制:1000Kb
问题描述:
有一种形式的Fibonacci数列定义如下:
F(0)=7
F(1)=11
F(n)=F(n-1)+F(n-2)(n>=2)按以下声明写一个函数fib
int fib(int n);
fib函数用来计算参数n对应的F(n)。
fib(n)的返回值是F(n)输入说明
函数参数为一个整数n(0<=n<40)。输出说明
函数返回值为整数,表示n对应的F(n)值。输入样例
2输出样例
18#includeint fib(int n) { if (n==0) return 7; else if (n==1) return 11; return fib(n-1)+fib(n-2); } int main(void) { int n; scanf("%d",&n); printf("%d",fib(n)); return 0; } 065:数字处理类别:函数与递归
时间限制:2S
内存限制:1000Kb
问题描述
编写一个程序,从键盘输入一个非零整数n(0 < n <= 1000000000),对整数n进行如下处理:
将整数的各位数字取出来相加,如果结果是一位数则输出该数,否则重复上述过程,直到得到的结果为一位数,并输出该结果。
例如:n=456,变换过程如下
4+5+6=15
1+5=6
输出结果为6输入说明
一个非零整数n。输出说明
输出整数n的处理结果。输入样例
456输出样例
6#includeint fun(int n) { int sum=0; int k=1; while (n/k!=0) { sum=sum+(n/k)%10; k=k*10; } if (sum<10) return sum; else return fun(sum); } int main(void) { int n; scanf("%d",&n); printf("%d",fun(n)); return 0; } 159:阶乘运算描述:编写P(m,n)=m!/n!/(m-n)!,(m>n)。求出P(8,6)和P(5,2)的值。
时间限制:1s
内存限制:10000
类别:1
输入说明
输入两个整数(m>n),如8 6输出说明
输出保留2位小数输入样例
8 6输出样例
28.00提示
采用for循环结构,数据类型为单精度浮点型,输出保留两位小数,格式%.2f。
编写阶乘计算函数Mul(),主函数调用#includeint Mul(int n) { if (n==0) return 1; int temp=1; for (int i=1;i<=n;i++) temp=temp*i; return temp; } double P(int m,int n) { int max=m,min=n; if (n>m) { max=n; min=m; } double p=(double)Mul(max)/(double)Mul(min)/(double)Mul(max-min); return p; } int main(void) { int m=0,n=0; scanf("%d %d",&m,&n); printf("%.2f",P(m,n)); return 0; } 215:字符逆序排放时间限制:1S
内存限制:10000Kb
问题描述:
写一个函数,使输入的字符按照反序排放,在主函数中输入和输出字符。
输入说明:
输入一个字符串。
输出说明:
输出上述字符串的逆序排列。
输入样例:
animal
输出样例:
lamina
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)