C++ 在一系列数字中计算3的数量

C++ 在一系列数字中计算3的数量,c++,math,C++,Math,(这不是家庭作业) 我正在练习一个问题()-“当打印从1到N的数字时,计算3的数量”。我还没有在网上找到任何解决方案,我想知道回答这个问题的更有效的方法是什么 我的解决办法是: #包括 使用名称空间std; int main() { int l; cin>>l; int c=0; 对于(int i=0;i0) { int-tmp=j%10; 如果(TMP=3)C++; j/=10; } } cout 2出现3看起来是递归的一个很好的用例。调用你的函数f(n)(简称,因为我将在下面使用数学符号)。

(这不是家庭作业)

我正在练习一个问题()-“当打印从1到N的数字时,计算3的数量”。我还没有在网上找到任何解决方案,我想知道回答这个问题的更有效的方法是什么

我的解决办法是:

#包括
使用名称空间std;
int main()
{
int l;
cin>>l;
int c=0;
对于(int i=0;i<(l+1);i++)
{   
int j=i;
而(j>0)
{
int-tmp=j%10;
如果(TMP=3)C++;
j/=10;
}
}

cout 2出现3

看起来是递归的一个很好的用例。调用你的函数
f(n)
(简称,因为我将在下面使用数学符号)。然后通过类似于f(a)+f(b)+…的方式计算f(n),当所有的数字a,b,…都比n小得多时

我只想通过示例给出想法,而不是代码。我希望这将足够完整,可以编写代码,而不是太多,因此任务仍然很有趣

首先:

f(0) = 0
f(1) = 0
f(2) = 0
f(3) = 1
f(4) = 1
...
f(9) = 1
f(10) = 1

现在计算n的f(n),n是10的幂:

f(10) = 1
f(100) = 20
f(1000) = 300
...
f(10^(n+1)) = 10 * f(10^n) + 10^n  (or something like that)
我希望我做对了。这个想法是,例如n=1000,考虑所有第一个数字6的3位数字。这个列表中有F(100)3。对于所有其他的第一个数字,除了3个,100个以上3个。

现在考虑任意<代码> n>代码>检查它的第一个数字,叫它“代码>代码< d/代码>。所有的数字比<代码> n>代码>包含所有可能的数字,它们的第一个数字小于<代码> d>代码>,还有一些数字,它们的第一个数字正好是代码> d< /代码>。现在把所有这些列表分开考虑,并在其中计数3个。



一般建议:在编写“快速”代码时,始终保持“慢速”代码的可访问性。通过这种方式,可以很容易地测试代码,并发现未处理的情况,例如出现一个错误等。

“尽管这需要很长时间来处理长的代码”您是如何确定的?即使是一个64位整数也只有19位小数,在任何现代处理器(嵌入式或其他)上,都应该在一秒钟内完成。什么是“长时间”昨天有一个类似的问题,数字是4,而不是3。先做数学题:有一个数字的数字是3,介于0和10之间。有10个数字的第二个数字是3,介于0和100之间,还有10个数字的第一个数字是3,其中一个是33,即总共有19个。三个或更多的数字也是如此digits@Unkwn,很可能
2000000000000000
不适用于
int
。您可能需要指定程序需要显式计算的内容。通过链接提供它并不好-人们不会单击它。这可能会导致混淆。