求和
public class Main{
static int sum=0;
public static void main(String[] args) {
for(int i=1;i<=2019;i++) {
String str=i+"";
if(str.contains("2")||str.contains("0")||str.contains("1")||str.contains("9"))
sum+=i;
}
System.out.println(sum);
}
}
答案1905111
矩阵切割
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。例如,对于一块两边分别为5 和3 的材料(记为5 X 3),小明会依次切出3 X 3、2X 2、1 X 1、1 X 1 共4 个正方形。现在小明有一块矩形的材料,两边长分别是2019 和324。请问小明最终会切出多少个正方形?
思想就是辗转相除法。一个axb 的矩形不断的切除掉 min{a,b}*min{a,b}个矩形。切到 长或宽中有一个小于min{a,b},在此之后,就不能继续切边长为min{a,b}的矩形了。 剩下的情况可能是a,a%b,或b,b%a的情况,这主要取决于谁小。这样子切割下去,直到切割到1或 一条边是另外一条边的倍数的情况,如果成倍数,就直接a/b 便是能切出来的个数。不成倍数,则切的是最小边。
public class Main {
static int count=0;
public static void main(String[] args) {
int n =2019;int m =324;
gcd(n,m);
System.out.println(count);
}
public static int gcd(int n ,int m) {
if(m!=0)count+=n/m;
return m==0? n:gcd(m,n%m);
}
}
另一种版本
public class 矩形切割 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int max = sc.nextInt();
int min=sc.nextInt();
int count=0,num,temp;
while (true){
if ( min==0){//当没有得时候就可以退出了
break;
}
num = max/min;//看看当前长宽不变得时候有几个正方形
count+=num; //把这些都加进来
//替换一下,剪完正方形,之后,原来得长就变成了宽,原来的宽就成了长
temp=max-min*num;//原来得长减去剪掉得几个宽,就是现在得宽
max=min;
min=temp;
}
System.out.println(count);
}
}
或者直接手算,反正数据不太大
答案21
质数
【问题描述】
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……请你计算 第 2019 个质数是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
唯一的注意点就是第2019位,必须准确,可以拿数字验证。
public class Main{
static int counts=0;
public static void main(String[] args) {
for(int i=2;;i++) {
if(check(i))counts++;
if(counts==2019) {
System.out.println(i);
break;
}
}
}
static boolean check(int n) {
for (int i = 2; i <= (int) Math.sqrt(n); i ++)
if(n % i == 0) return false;
return true;
}
}
答案17569