(http://oj.hzjingma.com/contest/problem?id=20&pid=4)**
**D. D:价值之和 10’*`
**
描述
【问题描述】
定义数字x的价值为其不同质因子的个数。
例如:数字2020可以写成2020=2∗2∗5∗101,其价值为3.
JM boy请你帮忙计算整数1到2020中,所有都不包含数字5的正整数的价值之和。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数(提示:答案最后一位数是奇数),在提交答案时只填写这个整数,填写多余的内容将无法得分。
/*
质数:指在 大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
质因子:能整除给定正整数的 质数
写一个函数function1:
判断一个数的每一位是否包含数字5,用 x % 10 == 5 判断, 然后再去掉最后一位
再写一个函数function2:
对于一个给定的数x,判断起质因子的个数。
直接枚举2到x−1,判断是否是质数,是否是x的因子,如果是,则计数+1
答案:3257
*/
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static boolean prime(int x) {
for(int i=2;i*i<=x;i++) {
if(x%i==0) return false;
}
return true;
}
public static boolean ok(int x) {
while(x>0) {
if(x%10==5) return false;
x/=10;
}
return true;
}
public static int f(int x) {
int cnt=0;
for(int i=2;i<=x;i++) {
if(!prime(i)) continue;
if(x%i==0) cnt++;
while(x%i==0) {
x/=i;
}
}
return cnt;
}
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int ans=0;
for(int i=1;i<=2020;i++) {
if(ok(i)) {
ans+=f(i);
}
}
System.out.println(ans);//3257
}
}
E. E:数方 15’
描述
【问题描述】
在右图A到I的9个格子中填入1−9中的任意数字,不要求每一个数字都填入,也不要求每一个数字只能填一次。
但是,得满足以下条件:
|A|B |C
|D|E |F
|G|H|I
1、 数字ABC构成的三位数ABC是一个立方数
2、 数字DEF构成的三位数DEF是一个质数
3、 数字GHI构成的三位数GHI是一个平方数
4、 数字ADG构成的三位数ADG是一个三角数
5、 数字BEH构成的三位数BEH是一个四次方数
6、 数字CFI构成的三位数CFI是一个回文数
提示:三角数即正整数前n项和1,3,6,10,15,21,28,……
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为九个数字,依次为A B C D E F G H I,在提交答案时依次填写这九个数字,相邻两个数字用一个空格隔开,填写多余的内容将无法得分。
/*
这个题目可以手算结合编程求答案。从三位数的四次方数作为出发点,逐个确定。当然,在判断质数,三角数的时候计算量比较大,可以借助计算机,编程快速计算。
当然这个题目,编程写,有趣的很。
9个for循环嵌套,枚举每一个数字,9个数字填好之后,再判断是否满足6个条件,如果满足,则就是答案。
当然,如果不加优化,需要等电脑跑一会就是了~
答案:
7 2 9 4 5 7 1 6 9
*/
import java.util.Scanner;
public class Main{
public static boolean prime(int x) {
for(int i=2;i*i<=x;i++) {
if(x%i==0) return false;
}
return true;
}
public static boolean sanjiao(int x)
{
int ans=0;
for(int i=1;;i++) {
if(i*(i+1)<2*x) continue;
if(i*(i+1)==2*x) return true;
return false;
}
}
public static boolean power(int x,int n) {
if(Math.pow(Math.pow(x, 1d/n), n)-x)<=Math.pow(10, -6)) {
System.out.println(x);
return true;
}
System.out.println("NO");
return false;
}
public static void main(String[]args) {
// for(int A=1;A<=9;A++) {
// for(int B=1;B<=9;B++) {
// for(int C=1;C<=9;C++) {
// if(!power(A*100+B*10+C,3)) continue;
// System.out.println("Diyiguan");
// for(int D=1;D<=9;D++) {
// for(int E=1;E<=9;E++) {
// for(int F=1;F<=9;F++) {
// if(!prime(D*100+E*10+F))continue;//2质数
// for(int G=1;G<=9;G++) {
// if(!sanjiao(A*100+D*10+G)) continue;//3三角数
// for(int H=1;H<=9;H++) {
// if(!power(B*100+E*10+H,4)) continue;
// for(int I=1;I<=9;I++) {
// if(C!=I) continue;//5回文数
// if(power(G*100+H*10+I,2)) {
// System.out.printf("%d %d %d %d %d %d %d %d %d", A,B,C,D,E,F,G,H,I);
// return ;
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
//A B C,D,E,F,G,H,I
//7 2 9 4 5 7 1 6 9
System.out.println(Math.pow(10, -16)+"NO");
if(power(157,2)) {
System.out.println("729YES");
}else {
System.out.println("&29NO");
}
}
}