1、MT1190分数乘法
输入5组分数,对他们进行乘法运算,输出结果。不考虑分母为0等特殊情况。
格式
输入格式:
输入整型,每组一行,如样例所示。
输出格式:
输出计算结果实型,如样例所示。
样例 1
输入:
1/2 1/4 2/3 1/7 3/5 2/7 3/13 2/5 1/9 11/15
输出:
0.125000 0.095238 0.171429 0.092308 0.081481
分析过程
刚看到这个题目的时候,下意识反应,输入五组,然后分别输入。后面才意识到这个可以使用循环结构解决,所以,就写出了下面代码。
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
double a1,a2,b1,b2;
for(int i=0;i<5;i++){
scanf("%lf/%lf %lf/%lf",&a1,&b1,&a2,&b2);
printf("%lf\n",(a1*a2)/(b1*b2));
}
return 0;
}
2、MT1191减半
输入两个值N和M,输出N做M次减半后的值。比如100,减半后依次为50, 25, 12…,减半3次后是12。输入不考虑0,负数或者其他特殊情况。
格式
输入格式:
输入为整型,空格分隔
输出格式:
输出为整型
样例 1
输入:
100 3
输出:
12
注意点
这道题没有什么难度,但是有一点需要注意,要求输入数为整数,所以在减半的时候不能使用1/2这种形式,因为这样计算的话,会直接化成整型,计算结果为0,无法得到想要的结果,而是用0.5就可以得出正确结果。
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,count;
cin >> n >> count;
for(int i=0;i<count;i++){
n=0.5 * n;
}
cout << n;
return 0;
}
3、MT1193偶数的平方和
输入正整数N,求前N个偶数的平方和。不考虑溢出。
格式
输入格式:
输入正整数N
输出格式:
输入整型
样例 1
输入:
3
输出:
56
备注
本题第一个偶数从2起算
分析过程
本题要求前n个偶数的平方和。此题要求偶数从2开始,那么样例一输入的n为3,所以3个偶数为2,4,6,所以循环的次数为3,循环当中的偶数应该如何依次增大呢?是需要前一个偶数加2,或者说,可以从i=1开始,i乘以2也是可以实现的。
实现代码
首先尝试使用加法实现,实现代码如下:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,sum=0;
cin >> n;
int m = 2;
for(int i=1;i<=n;i++){
sum += pow(m,2);
m = 2 + i*2;
}
cout << sum;
return 0;
}
然后使用乘法解决,实现代码如下:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,sum=0;
cin >> n;
for(int i=1;i<=n;i++){
int m = i*2;
sum += pow(m,2);
}
cout << sum;
return 0;
}
上述两种方法的不同之处在于,是否在循环前就定义第一个偶数为2。
4、MT1194奇数的平方和
输入正整数N,求前N个奇数的平方和。不考虑溢出。
格式
输入格式:
输入正整数N
输出格式:
输入整型
样例 1
输入:
3
输出:
35
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,m=1,sum=0;
cin >> n;
for(int i=1;i<=n;i++){
sum += pow(m,2);
m = 1 + i*2;
}
cout << sum;
return 0;
}
上面两个题计算奇偶数的区别仅仅在于初值,奇数初值为1,偶数初值为2。
5、MT1195公式求和
输入正整数N和M,按照下列公式求和。
格式
输入格式:
输入整型,空格分隔
输出格式:
输出实型
样例 1
输入:
2 4
输出:
0.42361
分析过程
刚开始的时候没有理解本题的终结条件(可能是数学能力的缺失),后来发现m是最后的一个值,所以要求的应该是小于m,按照上面的理解,写出以下代码:
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n,m;
double sum=0;
scanf("%d %d",&n,&m);
while(n<=m){
sum += 1.0/(pow(n,2));
n++;
}
printf("%.5f",sum);
return 0;
}
6、MT1196阶乘
请编写一个简单程序,输入正整数n,输出n的阶乘。
格式
输入格式:
输入整型
输出格式:
输出整型
样例 1
输入:
5
输出:
5!=120
实现代码
#include<bits/stdc++.h>
using namespace std;
/*解决思路:
注意这里要实现阶乘就需要设置sum初值为1,
然后i从1开始依次相乘到输入数*/
int main( )
{
int n,sum=1;
scanf("%d",&n);
for(int i=1;i<=n;i++){
sum = sum*i;
}
printf("%d!=%d",n,sum);
return 0;
}
7、MT1197阶乘和
求1!+2!+3!+…+n!
格式
输入格式:
输入为整型
输出格式:
输出为整型
样例 1
输入:
5
输出:
153
分析过程
本题需要解决的有两点:
- 计算从1到输入数n的阶乘
- 将这些阶乘相加
按照上面的两点我们可以得知,计算阶乘这个部分需要计算多次,所以可以写成一个函数,调用输入数n次,然后设置一个sum=0,来计算总数。
按照上述思路,得到如下代码:
实现代码
#include<bits/stdc++.h>
using namespace std;
int s(int a){
int sum1=1;
for(int i=1;i<=a;i++){
sum1*=i;
}
// cout << sum1 << "**";
return sum1;
}
int main( )
{
int n,sum=0;
cin >> n;
for(int i=1;i<=n;i++){
sum+=s(i);
}
cout << sum;
return 0;
}
明天继续吧。