1樓:sfmmdm
#include
using
namespace
std;
intsum=0
;int
cnt[
10],
ans[
10];
inline
void
count
()void
dfs(
intk)}
for(
inti=0
;i<=9;
i++)}
intmain()
2樓:陳辰陽
大家答案不一樣的原因是0出現的概率和其他數字本來就不一樣,因為7和10是互質的,其他結果可以實現11對應。
如果考慮0出現的次數,F(i,j)表示前i個個和mod10為j且不出現0的可能數。我們要求的是S(i)=前i個和mod為0且不出現0的可能數=F(i,0)
因為F(i,j)=求和(對於k不等於j)F(i-1,k)所以S(i)=求和(k=1,...,9)F(i-1,k)=9F(i-2,0)+8*求和(k=1,..,9)F(i-2,k)=8S(i-1)+9S(i-2)
S(1)=0,S(2)=9
所以S(k)=9^k/10+9*(-1)^k/10最後0出現的個數就是10^6-S(7)=521704如果考慮1或者別的數字出現的次數,同上面的符號不難求出F(7,1)=S(7)+1,也就是七個數和mod10為1不出現0的值,不難發現這個可以和七個數和mod10為0不出現k(k=1,...9)的集合可以一一對應所以最終結果就會少1,也就是521703
3樓:九方空
用sql嘗試了一下……雖然很醜……
建了乙個臨時表, 十行,分別是1-0 。 我很好奇為啥比樓上乙個大佬算的少1……
select sum(decode(instr(v_char,'1'),'0','0','1')) as s_1,
sum(decode(instr(v_char,'2'),'0','0','1')) as s_2,
sum(decode(instr(v_char,'3'),'0','0','1')) as s_3,
sum(decode(instr(v_char,'4'),'0','0','1')) as s_4,
sum(decode(instr(v_char,'5'),'0','0','1')) as s_5,
sum(decode(instr(v_char,'6'),'0','0','1')) as s_6,
sum(decode(instr(v_char,'7'),'0','0','1')) as s_7,
sum(decode(instr(v_char,'8'),'0','0','1')) as s_8,
sum(decode(instr(v_char,'9'),'0','0','1')) as s_9,
sum(decode(instr(v_char,'0'),'0','0','1')) as s_0
from (select to_char(t_1.t1 + t_1.t1 + t_2.
t1 + t_3.t1 + t_4.t1 + t_5.
t1t_6.t1 + t_7.t1) as v_sumt_1.
t1 || t_1.t1 || t_2.t1 || t_3.
t1 || t_4.t1 || t_5.t1 || t_6.
t1 || t_7.t1 as v_charfrom t_1 t_1, t_1 t_2, t_1 t_3, t_1 t_4, t_1 t_5, t_1 t_6, t_1 t_7)
where substr(v_sum, length(v_sum), 1) = 0
S_1 S_2 S_3 S_4 S_5 S_6 S_7 S_8 S_9 S_0
1 521702 521702 521702 521702 521703 521702 521702 521702 521702 521703
4樓:陳亮
每個數字出現概率都是0.7
end0Count = 1000000
num 0 times=700000. rate=0.700000num 1 times=700000.
rate=0.700000num 2 times=700000. rate=0.
700000num 3 times=700000. rate=0.700000num 4 times=700000.
rate=0.700000num 5 times=700000. rate=0.
700000num 6 times=700000. rate=0.700000num 7 times=700000.
rate=0.700000num 8 times=700000. rate=0.
700000num 9 times=700000. rate=0.700000// 各位數相加以0結尾
bool bitSumEnd0(int num)// 7個個位數(可重複)相加之和的個位是0,每個數字出現的概率void calNum()
; int end0Count = 0;
for (int i=0; i<9999999; iif (bitSumEnd0(iend0Countint num = iint bitCount = 0while (num > 0bitCountnumTimesArray[num % 10num /= 10if (bitCount < 7numTimesArray[0] += (7-bitCountprintf("\nend0Count = %d\n\n", end0Count);
for (int i=0; i<10; iprintf("num %d times=%d. rate=%lf\n", i, numTimesArray[i], numTimesArray[i] * 1.0 / end0Count
5樓:
// 10個數字可以重複,但是應該相互之間是沒有順序的。如7個0的情況,不應當算作0出現了7!次。
// 因此要避免出現重複。故我在遞迴中加入了大小順序的限制,使在統計時,方便快速排除重複。
// 最後出現的結果共有1144個組合,0-9出現的次數分別是
// 504,497,504,497,504,497,504,497,504,497
// 也即,0-9根據其是偶數或奇數,出現的概率分別是,44.05%和43.44%
var arr = [0,0,0,0,0,0,0,0,0,0];
var index = [0,0,0,0,0,0,0];
var count = 0;
function step(indent, next, arr, index)
for(var i=0; i <= next; i++)
}step(0, 9, arr,index);
console.log(count+": "+arr);
6樓:InvsGhost
雖然不清楚提問的人究竟問啥.. 但按照題目的理解過程是:
在求和之後個位為0 的7個數字構成的一系列排列中,(0-9)各自出現的概率(因提問是出現的概率,所以認為只要在排列中出現,則無論在該排列中有多少個,均視作出現)
即解題過程為:
求得所有求和之後個位為0 的7個數字構成的一系列排列統計(0-9)在這一系列排列中出現過的組數佔全組合數量的比例所以...這道繞口的題目,個人解答如下。。
如果大家認同 2個數的結果的話。。那7個數的結果就是醬紫PS:這是排列..如果是組合的話就-。-換種演算法吧
7樓:
為什麼我算出來的概率是52.1703%
#include
#include
using
namespace
std;
inttotal=0
;int
sub[
10];
intcounts[10
];void
dfs(
intlevel
,int
sum)}}
return;}
for(
inti=0
;i<10;
i++)}
intmain()}
8樓:Yriuns
>>>a=
range(10
)>>>b=
itertools
.product(a
,repeat=7
)>>>c=
filter
(lambdax:
sum(x)
%10==0
,b)>>>d=
itertools
.chain
.from_iterable(c
)>>>e=
Counter
(list(d
))>>>
eCounter()
9樓:
不太懂,我在想是不是 @vczh 簡單的程式就能解決
感覺很多人審題錯誤了。題主問的是在和的個位數為0的情況下,0-9這10個數各自出現的概率吧
如何快速判斷乙個數可被 7 整除?
雲在青天水在瓶 小學奧數題。假如我們有乙個數字 我瞎打的 把數從後往前三位一段分段 分成746,994,293,198,369,937,391,288,7 然後按序號是奇數或偶數分組 奇陣列 746,293,369,391,7偶數組 994,198,937,288 然後對兩組分別求和 得出奇陣列 1...
Java中如何隨機選取乙個長度為10的陣列中的5個不重複的數?
luoxn28 初始化N 陣列長度 10 每次 Random nextInt N 結果為m,然後將下標為m的資料和陣列最後乙個元素交換位置,然後N 繼續 Random nextInt N 直到找到5個資料即可,也就是陣列中最後5個元素。 Aetherus HashMap Boolean duplic...
82 50 26,下乙個數一定是10嗎?
清新脫俗小郎君i 下乙個數是10。解析過程如下 82 50 32 8 4 50 26 24 8 3 26 x 16 8 2 x 10 我並不知道正確答案是什麼 我只知道,如果有人問我找規律的問題 我會先用這個數列來驗證ta是否有資格問我問題我甚至會告訴ta規律是什麼 是第 個滿足 除以 的餘數為1的...