1.打卡题:数位拆分+ 奇数判断
spackage daka;
/*最小的整数,X
* X 是 2019的倍数
* x的每一位数字都是奇数
*
* 数位拆分
*/
public class jishubs {
public static void main(String[] args) {
for(int i =18171;i<Integer.MAX_VALUE;i+=2019) {
if(isJ(i)) {
System.out.println(i);
break;
}
}
}
private static boolean isJ(int num) {
while(num >0) {
int digit = num % 10;//只需要判断余数是否为奇数
if(digit % 2 ==0) {
return true;
}
num /= 10; // 每次取它的下一位
}
return false;
}
}
2.求含有100个约数的整数
for(int i=1;i<202222;i++) {
int cnt =0;//含有100个余数的数字,所以每次循环要放在循环体内
for(int j=1;j<=Math.sqrt(i);j++) {//只需要判断到一半,
//即可舍去 (2,3,3,2)的重复计算的
if(i % j==0) {
cnt+=2;
if(i == j) {
cnt--;
}
}
}
if(cnt == 100) {
System.out.println(i);
break;
}
}
}
3.求数组两两相乘再相加
30%:样例
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a [] = new int [n];
for(int i=0;i<a.length;i++) {
a[i] = sc.nextInt();
}
int sum =0;
//a.length表示最后一个数不需要再x前面的数
for(int i=0;i<a.length-1;i++) {
for(int j=i+1;j<a.length;j++) {
sum += a[i] * a[j];
}
}
System.out.println(sum);
}
太妙了这个方法
package daka;
import java.util.Scanner;
/*
* 给一个数组求它们两两相乘在相加;
*
* 先将数组每个元素相加,求和
* 每次减去它本身,并乘上它本身
*/
public class qiuhe {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long s = 0;//记录数组的总和
int arr [] = new int [n];
long count =0;
for(int i =0;i<n;i++) {
arr[i] = sc.nextInt();
s+=arr[i];
}
for(int i=0;i<n;i++) {
count = count+ (s-arr[i]) * arr[i];
s = s- arr[i];
}
System.out.println(count);
sc.close();
}
}
4.