第十一届蓝桥杯-跑步训练
题目描述:
解题思路:
当 体力充足 时可认为 每分钟损耗300体力
,注意若最后休息后体力不足600时直接使用 iTime+=iNum/10
计算时间。
代码如下:
public class RunExercise {
public static void main(String[] args) {
int iNum=10000;
int iTime=0;
do {
iNum-=600;
iTime+=60;
iNum+=300;
iTime+=60;
} while (iNum>=600);
iTime+=iNum/10;
System.out.println(iTime);
}
}
第十一届蓝桥杯(国赛)- 阶乘约数
题目描述:
解题思路:
- 质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。
- 每个 合数 都可以写成几个质数(也可称为素数)相乘的形式 ,这几个质数就都叫做这个合数的
质因数
。 质数
(素数):质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。合数
(质数的反义词):合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。
数学公式:
任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X = p1α1 ∗ p2α2 …… ∗ pkαk
约数个数
= (a1 + 1)(a2 + 1)……(ak + 1)
算法思路:
1.分解质因数:一个数 i
的质因数,j
从 2
到 i
, i1%j==0
则是约数,将已经分解的数去除(如 8/2=4,4/2=2,2是最后一个,最后得出 8=2*2*2
)
2.将分解的质因数的幂数存放在一个数组中,在循环中将他们次数依次 +1
,最后相乘求和。
代码如下:
public class FactorialDivisor {
public static void main(String [] args) {
int arr[] =new int[101];
for (int i = 2; i <=100; i++) {
int j=2,i1=i;
while (i1!=j) {
if (i1%j==0) {
arr[j]++;
i1=i1/j;
}
else {
j++;
}
}
arr[j]++;
}
long sum=1;
for (int i = 2; i <=100; i++) {
if (arr[i]!=0) {
sum*=(arr[i]+1);
}
}
System.out.println(sum);
}
}