约数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果整数 a 是整数 b 的整数倍,则称 b 是 a 的约数。
请问,有多少个正整数是 2020 的约数。
运行限制
最大运行时间:1s
最大运行内存: 128M
所需变量
int sum = 0;//代表约数的个数,初始化为0
int i;//循环变量,初始化为1,代表从1开始
int n = 2020;//将其变量化,到2020终止
首先我们要知道整除的方法,就是求余!如果求余为0代表能整除
if(n%i == 0){
sum++;
}
思路:我们从1开始判断,如果2020能将i整除,那么我们就知道2020是i的倍数,因此我们在总和sum上+1,最后判断到2020,我们就得到最终的答案!
#include <iostream>
using namespace std;
int main()
{
int sum = 0,i = 1,n = 2020;
for(;i<=2020;i++){
if(n%i == 0){
sum++;
}
}
cout<<sum<<endl;
return 0;
}
**
二进制表示(填空题)
**
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 1 到 10000 的所有整数,至少需要多少个二进制位?
运行限制
最大运行时间:1s
最大运行内存: 128M
所需变量
int sum;//代表所需要的位数
思路:我们可以直接用pow(2,x),代表2的x次方,也就是如果2的x次方大于我们要求的数,那么就代表这个数能被x位表示
for(;;sum++){
if(pow(2,sum)>10000){
break;
}
}
得到可以用多少位表示后,将其输出出来就可以!
完整代码如下(编译器是dev,语言是C语言):
#include <iostream>
using namespace std;
#include<math.h>
int main()
{
int sum = 1;
for(;;sum++){
if(pow(2,sum)>10000){
break;
}
}
cout<<sum<<endl;
return 0;
}
**
双阶乘
**
问题描述
一个正整数的双阶乘, 表示不超过这个正整数且与它有相同奇偶性的所有 正整数乘积。 nn 的双阶乘用 n ! !n!! 表示。
例如:
3!!=3×1=3
8!!=8×6×4×2=384
11!!=11×9×7×5×3×1=10395
请问, 2021!! 的最后 5 位 (这里指十进制位) 是多少?
注意: 2021 ! !=2021×2019×⋯×5×3×1 。
提示: 建议使用计算机编程解决问题。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。
运行限制
最大运行时间:1s
最大运行内存: 256M
所需变量
int sum = 1;//代表最后结果(只保留五位数)
int i;//循环变量
思路:我们从1开始不断乘下去,每次乘得到的结果都对100000求余,这样每次得到的都是最后五位数!代码如下:
for(i = 1;i<=2021;i = i+2){
sum = (sum*i)%100000;
}
最后将结果出输出来!该算法本人认为比较优,如果有更好的想法,欢迎q我!完整代码如下(编译器是dev,语言是C语言):
#include <iostream>
using namespace std;
int main()
{
int sum = 1,i;
for(i = 1;i<=2021;i = i+2){
sum = (sum*i)%100000;
}
cout<<sum<<endl;
return 0;
}