用Java计算出能被64整除的20位数有多少个,要求前十位数均大于5,后十位数均小于5
3个回答
展开全部
后10位数字为0000000000~4444444444
因为0000000000~4444444444 中一共有4444444445个数字
而4444444445不被64整除,所以这4444444445个数字中共有
4444444445L / 64 = 69444444个数字能被64整除
前10位数字为6666666666~9999999999
一共有3333333334个数字
所以总共有
3333333334*69444444=231481480046296296个数字能被64整除
写成代码是:
public static void main(String[] args) {
long count1 = 4444444445L / 64;
long count2 = 9999999999L-6666666666L+1;
long result = count1*count2;
System.out.println(result);
}
展开全部
public static void main(String[] args) {
int count = 0;
BigDecimal min = new BigDecimal("66666666660000000000");
BigDecimal max = new BigDecimal("66666666664444444444");
BigDecimal mu;
while (true) {
mu = min.divideAndRemainder(BigDecimal.valueOf(64))[1];
if ("0".equals(mu.toString()))
count++;
if (min.compareTo(max) == -1) {
min = min.add(BigDecimal.valueOf(1));
continue;
}
break;
}
System.out.println("个数:" + count);
}
追问
运行了怎么没反应呀
追答
好多个,所以慢慢等吧,这么大的数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class Test20 {
public static void main(String[] args) {
BigDecimal max = new BigDecimal("99999999999999999999");
BigDecimal min = new BigDecimal("10000000000000000000");
BigDecimal n = (max.subtract(min)).add(new BigDecimal(1));
List<String> s = new ArrayList<String>();//满足所有
List<String> s2 = new ArrayList<String>();//不重复
while((n.compareTo(new BigDecimal(s2.size())))>=0){
String str = "";
for(int i=0;i<20;i++){
str = str+String.valueOf((int)(Math.random()*9));
}
double number = Double.parseDouble(str);
int f2 = 0;
for (String ss : s2) {
if(ss.equals(str)){
f2 = f2 + 1;
}
}
if(f2==0){
s2.add(str);
}
if(number%10==0 && number>Double.parseDouble("55555555550000000000") && Double.parseDouble(str.substring(10, 20))<Double.parseDouble("5555555555")){
s.add(str);
}
}
System.out.println(s.size());
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询