ZZULIOJ 1050~1059(oj入门题)
作者:互联网
ZZULIOJ 1050~1059
- ZZULIOJ 1050: 阶乘的累加和
- ZZULIOJ 1051: 平方根的和
- ZZULIOJ 1052: 数列求和4
- ZZULIOJ 1053: 正弦函数
- ZZULIOJ 1054: 猴子吃桃
- ZZULIOJ 1055: 兔子繁殖问题
- ZZULIOJ 1056: 幸运数字
- ZZULIOJ 1057: 素数判定
- ZZULIOJ 1058: 求解不等式
- ZZULIOJ 1059: 最高分
ZZULIOJ 1050: 阶乘的累加和
时间限制: 1 Sec 内存限制: 30 MB
题目描述
求1! + 2! + ……n!
输入
输入一个整数n,你可以假定n不大于10。
输出
输出一个整数,即阶乘累加的结果,单独占一行。
样例输入 Copy
4
样例输出 Copy
33
代码
#include<stdio.h>
int Factorial(int n)
{
int num = 1;
while(n)
{
num = num * n;
n--;
}
return num;
}
int main()
{
int n;
scanf("%d", &n);
int sum = 0;
for(int i = 1; i <= n; i++)
{
sum += Factorial(i);
}
printf("%d\n", sum);
return 0;
}
ZZULIOJ 1051: 平方根的和
时间限制: 1 Sec 内存限制: 30 MB
题目描述
数列的定义如下:
数列的第一项为item,以后各项为前一项的平方根,求数列的前n项的和。
输入
由两个整数item(item<10000)和n(n<1000)组成,item和n的含义如前所述。
输出
输出该数列的和,占一行,要求精度保留2位小数。
样例输入 Copy
84 4
样例输出 Copy
97.93
代码
#include<stdio.h>
#include<math.h>
int main()
{
int item, n;
scanf("%d %d", &item, &n);
double sum = 0;
double t = item;
for(int i = 1; i <= n; i++)
{
sum += t;
t = sqrt(t);
}
printf("%.2lf\n", sum);
return 0;
}
ZZULIOJ 1052: 数列求和4
时间限制: 1 Sec 内存限制: 30 MB
题目描述
输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222的结果为246
输入
包含两个整数,n和a,含义如上述,你可以假定n和a都是小于10的非负整数
输出
输出前n项和,单独占一行
样例输入 Copy
3 2
样例输出 Copy
246
代码
#include<stdio.h>
int main()
{
int n, a;
int sum = 0;
int t = 1;
scanf("%d %d", &n, &a);
for(int i = 1; i <= n; i++)
{
sum += t * a;
t = t * 10 + 1;
}
printf("%d\n", sum);
return 0;
}
ZZULIOJ 1053: 正弦函数
时间限制: 1 Sec 内存限制: 128 MB
题目描述
输入x,计算上面公式的前10项和。
输入
输入一个实数x。
输出
输出一个实数,即数列的前10项和,结果保留3位小数。
样例输入 Copy
1
样例输出 Copy
0.841
代码
#include<stdio.h>
int main()
{
double x, temp1, temp2;
double sinx = 0;
int t = 1;//变号
scanf("%lf", &x);
temp1 = x; //分子
temp2 = 1;//分母
for(int i = 1; i <= 10; i++)
{
sinx += t * temp1 / temp2;
t = -t;
temp1 = temp1 * x * x;
temp2 = temp2 * 2 * i * (2 * i + 1);
}
printf("%.3lf\n", sinx);
return 0;
}
ZZULIOJ 1054: 猴子吃桃
时间限制: 1 Sec 内存限制: 128 MB
题目描述
悟空第一天摘下桃子若干,当即吃掉一半,还不过瘾,又多吃一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
输入
输入一个数n(1<=n<=30)。
输出
输出第一天的桃子个数。
样例输入 Copy
3
样例输出 Copy
10
代码
#include<stdio.h>
int main()
{
int n;
int sum = 1;
scanf("%d", &n);
for(int i = 1; i < n; i++)
{
sum = sum + 1;
sum = 2 * sum;
}
printf("%d\n", sum);
return 0;
}
ZZULIOJ 1055: 兔子繁殖问题
时间限制: 1 Sec 内存限制: 128 MB
题目描述
这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?
输入
输入月数n(1<=n<=44)。
输出
输出第n个月有多少对兔子。
样例输入 Copy
3
样例输出 Copy
2
/*本题是一个经典的递推入门题目:
用f(n)表示第n个月的兔子数目,则:
f(n) = f(n-1) + 本月新生兔子数 而,
本月新生兔子数 = f(n-2) (因为上上个月已存在的每只兔子,
本月都会新生一只兔子) 所以,f(n) = f(n-1) + f(n-2)
这就是著名的fabinacci数列,
后一项等于前两项的和: 1 1 2 3 5 8..... */
//方法一、用循环的方法来做
#include<stdio.h>
int main()
{
int n, t;
scanf("%d", &n);
int rabbit1 = 1;//第1个月兔子数
int rabbit2 = 1;//第2个月兔子数
for(int i = 3; i <= n; i++)
{
t = rabbit2;
rabbit2 = rabbit1 + rabbit2;
rabbit1 = t;
}
printf("%d\n", rabbit2);
return 0;
}
//方法2、用递归的方法来做
//大家可以用递归的代码,但是会显示时间超时
//分别用方法一和方法二输入 44 看看运行的时间
//由此可猜测 用递归的算法比一般的执行时间更长
#include<stdio.h>
int Fabinacci(int n)
{
if(n <= 2)
return 1;
else
return Fabinacci(n-1) + Fabinacci(n-2);
}
int main()
{
int rabbit, n;
scanf("%d", &n);
rabbit = Fabinacci(n);
printf("%d\n", rabbit);
return 0;
}
ZZULIOJ 1056: 幸运数字
时间限制: 1 Sec 内存限制: 128 MB
题目描述
小明对某些数字有偏爱,例如,他喜欢7的倍数,而不喜欢4的倍数,如果一个整数是7的倍数,而不是4的倍数,小明会认为这个数字是他的幸运数字。现在给定两个整数m和n,请你帮小明找m到n范围内的最大的幸运数字。如果m到n范围内没有幸运数字,则输出“no”
输入
两个正整数m和n(m < =n,且均小于10的9次方)
输出
一个整数,即m到n范围内的最大的幸运数字。
样例输入 Copy
90 100
样例输出 Copy
98
代码
#include<stdio.h>
int main()
{
int m, n;
int max = 0;//因为m和n都是正整数
//可以用 max == 0 判断是否有幸运数字
scanf("%d %d", &m, &n);
for(int i = m; i <= n; i++)
{
if(i % 7 == 0 && i % 4 != 0)
max = i;
}
if(max == 0)
printf("no\n");
else
printf("%d\n", max);
}
ZZULIOJ 1057: 素数判定
时间限制: 1 Sec 内存限制: 30 MB
题目描述
输入一个正整数n,判断n是否是素数,若n是素数,输出”Yes”,否则输出”No”。
输入
输入一个正整数n(n<=1000)
输出
如果n是素数输出"Yes",否则输出"No"。输出占一行。
样例输入 Copy
2
样例输出 Copy
Yes
代码
#include<stdio.h>
int main()
{
int n,i;
scanf("%d", &n);
for(i = 2; i <= n / 2; i++)
{
if(n % i == 0)
break;
}
if(i <= n / 2 || n == 1)
printf("No\n");
else
printf("Yes\n");
return 0;
}
ZZULIOJ 1058: 求解不等式
时间限制: 1 Sec 内存限制: 128 MB
题目描述
已知不等式 1!+2!+3!+…+m!‹n,请编程对用户指定的n值计算并输出满足该不等式的m的整数解。
输入
输入一个整数n,n为int范围内的正整型。
输出
输出m的取值范围,具体格式见输出样例。
样例输入 Copy
2000000000
样例输出 Copy
m<=12
提示
注意计算过程中的类型溢出问题
代码
// 输入的 n 虽然是int范围内的正整型
// 但是设置的两个函数返回值可能会超过int型
// 例如: 假设 x_int型是小于5的 输入 n = 4
// 则 1! + 2! = 3 < n 需要进行下一个循环
// 而 1! + 2! + 3! = 9 > 5
// 又 3! = 6 > 5
// 所以两个函数都设置成long long
#include<stdio.h>
long long Factorial(int n)
{
long long num = 1;
while(n)
{
num = num * n;
n--;
}
return num;
}
long long Add_factorial(int n)
{
long long sum = 0;
for(int i = 1; i <= n; i++)
{
sum = sum + Factorial(i);
}
return sum;
}
int main()
{
int n, i;
scanf("%d", &n);
for(i = 1; ; i++)
{
if(Add_factorial(i) >= n)
break;
}
printf("m<=%d\n", i - 1);
return 0;
}
ZZULIOJ 1059: 最高分
时间限制: 1 Sec 内存限制: 30 MB
题目描述
输入一批学生的成绩(整数),输出最高分。
输入
输入包含多个非负整数和一个负整数。该负数不作为有效成绩,只表示输入结束。
输出
输出一个整数,即最高分。单独占一行。
样例输入 Copy
7 6 5 9 2 -1
样例输出 Copy
9
代码
#include<stdio.h>
int main()
{
int a[10000], n, max;
int i = 0;
while(1)
{
scanf("%d", &a[i]);
if(a[i] < 0)
break;
i++;
}
n = i;
max = a[0];
for(i = 1; i <= n; i++)
{
if(max < a[i])
max = a[i];
}
printf("%d\n", max);
return 0;
}
标签:1050,输出,int,1059,ZZULIOJ,样例,Copy,输入 来源: https://blog.csdn.net/L51213/article/details/113793976