编写一个程序,输出包含5但不包含8的5位数的总数
Write a program that outputs the total of 5-digit numbers with a five in them, but not with an 8
我的挑战是输出有数字5但没有数字8的五位数的总数。到目前为止,我仅有的两个答案是0和90000。有人能帮我吗?
#include <iostream>
using namespace std;
int main() {
int number;
int counter=10000;
int ncounter=0;
while (counter >= 10000 && counter <= 99999) {
int n1,n2,n3,n4,n5;
counter = counter + 1;
n1 = number%10;
number /= 10;
n2 = number%10;
number /= 10;
n3 = number%10;
number /= 10;
n4 = number%10;
number /=10;
n5 = number%10;
number /= 10;
if (n1 == 5||n2 == 5||n3 == 5||n4 == 5||n5 == 5)
if (n1!=8)
if (n2!=8)
if (n3!=8)
if(n4!=8)
if (n5!=8)
ncounter=ncounter+1;
}
cout<<ncounter<<endl;
return 0;
}
(num有5但不是8)= (num没有8)- (num既不是8也不是5)= 8*9*9*9 - 7*8*8*8*8= 23816
每个数字是5个数字的选择(有重复)。
因为你不能选择数字8,你有9个可能的数字,所以这个问题等价于同样的问题,以9为基数(而不是以10为基数)。
如果你把1个数字变成5,剩下4个非5和非8的数字。这些数字的数量可以计算为8^4
(因为有8个可用的数字可供选择,您需要从中选择4个)。对于一个5,有5种方法来定位5,所以乘以5。
与2个5类似,有10种方法来定位5s相对于其他数字的位置。
因此,我们有以下表格:
number of digits==5 remaining digits ways to position 5s
1 8^4 5
2 8^3 10 = 5*4/2
3 8^2 10
4 8^1 5
5 8^0 1
有5*8^4 + 10*8^3 + 10*8^2 + 5*8^1 + 8^0 = 26281
号<10^5
有5
,但没有8
。
有4*8^3 + 6*8^2 + 4*8^1 + 8^0 = 2465
数字<10^4
和5
,但没有8
。因此,存在满足您的标准的23816
数字。
这实际上是一个数学问题。这里我们有三个条件:
- 第一个数字不是零,因为它应该是一个五位数。
- 没有数字为8
- 一个或多个数字为5
可以有1到5个数字,其中第一个数字是或不是5(55555除外)。总共有9个病例。
如果第一个数字不是5,它有7个选项:[1234679];如果其他数字不是5,则有8个选项:[12346790]。
这里C(5)表示放置5的组合数,C(0) -表示放置其他数字的组合数。
N(5). 1st? C(5) C(o)
1 Y 1 * 8^4
1 N 4 * 7*8^3
2 Y 4 * 8^3
2 N 6 * 7*8^2
3 Y 6 * 8^2
3 N 4 * 7*8
4 Y 4 * 8
4 N 1 * 7
5 Y 1
Sum: 23816
相关文章:
- 在node-gip binding.gyp文件中,如何根据系统结构(32位、64位)包含不同的库文件
- int64_t 不包含 13 位整数
- 使用按位运算确定值是否包含另一个值
- 如何将 32 位无符号整数分配给包含 32 位的位字段
- 按位包含 OR 的错误结果
- C++ 检查字符串是否至少包含 1 位数字和 1 个字母
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 无法汇总初始化类型结构的变量,其中包含在类模板中的位字段成员
- 如何将包含 64 位纪元时间的字符串转换为人类可读格式
- 包含位字段的结构的大小
- setw() 在包含 UTF-8 多字节字符/码位的字符串上输入错误的输出
- 8 位(每个样本位数)PCM WAV 文件可以包含多个通道吗?
- 将包含位的字符串转换为矢量<bool>
- 迁移一个哈希函数,其中包含从 C++/Qt 到 Java 的 32 位无符号整数
- DFM:派生形式包含派生位图
- 读取包含16位签名数据的文件
- 将4位写入到一个二进制文件中,其中包含ofstream
- VS2010 x64:64位平台VS2010中包含错误数据的对象数组
- 如何检查llvm callInst是否包含位转换
- 64位系统能运行包含内联汇编的32位软件吗?