我必须编写一个程序,通过检查每个数字中从1到999,999(“强力”方法)的数字来确定1,000,000以下的正整数有多少至少一个7和至少一个9。答案应该是199,262。请帮忙!
答案 0 :(得分:1)
如果数字包含7 和 9
,请将数字转换为字符串和文字 int count = 0;
for (int i = 1; i < 1000000; i++) {
String text = String.valueOf(i);
// contains both
if (text.contains("7") && text.contains("9")) count++;
}
System.out.println(count);
答案 1 :(得分:0)
一些组合物:
没有7(或没有9)的两位数字的数字:
8*(9^1) = 72
没有9或7的2位数字数:
7*(8^1) = 56
2位数字的数量:
9*(10^1) = 90
至少有一个7和一个9的2位数字数:
90 - 2*72 + 56 = 2
n位计算公式:
= 9*(10^(d-1)) - 2*8*(9^(d-1)) + 7*(8^(d-1))
9*(10^1+10^2+10^3+10^4+10^5)
- 2*8*(9^1+9^2+9^3+9^4+9^5)
+ 7*(8^1+8^2+8^3+8^4+8^5)
= 199262
答案 2 :(得分:-1)
蛮力算法:
public int count() {
int count = 0;
boolean per7 = false;
boolean per9 = false;
for (int i = 0; i < 1000000; i++) {
int j = i;
while ((!(per7 && per9)) && j > 1) {
if (j%10 == 7) {
per7 = true;
} if (j%10 == 9) {
per9 = true;
}
j = j/10;
}
if (per7 && per9) {
count++;
}
per7 = false;
per9 = false;
}
return count;
}
另一方面,我建议使用关于组合学的基本知识,但我知道在学习期间,我们经常做愚蠢的任务来学习某些技能。