1.给定数列 1,1,1,3,5,9,17,⋯1,1,1,3,5,9,17,⋯,从第 44 项开始,每项都是前 33 项的和。
求第 2019032420190324 项的最后 44 位数字。
注意tm的数组下标和取余就行,用大数反而更加麻烦
package daka;
import java.math.BigInteger;
/*1,1,1,3,5,9从第四项开始,每项都是前三项的和
* 2019324项的后四位数字s
*
*/
public class shulie {
public static void main(String[] args) {
int a[] = new int [20190325];
a[0] =a[1] =a[2] =1;
for(int i=3;i<20190325;i++) {
a[i] = (a[i-3] + a[i-2] + a[i-1]) % 10000;
}
System.err.println(a[20190323]);
}
}
2.求第2019个质数(小于等于Math.sqrt())
package daka;
public class testtt {
public static void main(String[] args) {
int count=0 ;
for(int i=2;i<Integer.MAX_VALUE;i++) {
if(isPrime(i)) {
count++;
}
if(count ==2019) {
System.out.println(i);
break;
}
}
}
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
3.乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
package daka;
import java.util.Scanner;
/*
换瓶盖(训练思维)
*/
public class pgai {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int cap = num;//初始瓶盖数
int ans = num;//喝到的饮料
while(cap >=3) {
int exc = cap /3;
ans +=exc;
cap = exc + cap % 3 ;
}
System.out.println(ans);
}
}
4.小蓝很喜欢吃巧克力,他每天都要吃一块巧克力。一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝只吃没过保质期的巧克力,请问小蓝最少花多少钱能买到让自己吃 �x 天的巧克力。
import java.util.*;
public class Main {
static class Chocolate implements Comparable<Chocolate> {
int price;
int count;
int expirationDate;
public Chocolate(int price, int count, int expirationDate) {
this.price = price;
this.count = count;
this.expirationDate = expirationDate;
}
@Override
public int compareTo(Chocolate o) {
if (price != o.price) {
return Integer.compare(price, o.price);
} else {
return Integer.compare(expirationDate, o.expirationDate);
}
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int x = scanner.nextInt();
Chocolate[] chocolates = new Chocolate[n];
for (int i = 0; i < n; i++) {
int price = scanner.nextInt();
int count = scanner.nextInt();
int expirationDate = scanner.nextInt();
chocolates[i] = new Chocolate(price, count, expirationDate);
}
Arrays.sort(chocolates);
int days = 0;
int money = 0;
for (int i = 0; i < n; i++) {
if (days == x) {
break;
}
if (chocolates[i].expirationDate >= x - days) {
int count = Math.min(chocolates[i].count, x - days);
money += count * chocolates[i].price;
days += count;
}
}
System.out.println(money);
}
}
总结:
填空题 :数组下标,取余,素数,训练思维。
耶耶!!!
(我爱梗佬,只是不知道他是不是0,)
7615





