C実戦練習テーマ83
3788 ワード
テーマ:0—7の構成することができる奇数の個数を求めます.
プログラム分析:
この問題は実は配列の組み合わせの問題で、この数をsun=a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8とし、a 1-a 8はこの数のあるビットの数値を表し、1つの数の最後のビットが奇数である場合、この数は必ず奇数であり、前のビットがどんな数字であるかにかかわらず.最後の桁数が偶数の場合、この数は必ず偶数です.
a 1-a 8は0-7という8つの数字を取ることができ、トップ数字は0ではありません.
この数が1桁から8桁までの奇数の数を統計します. 1.1桁のみの場合はその数の最下位であり、奇数個数は4 2.この数が2桁の場合、奇数個数は4*7=28 3.この数が3桁の場合、奇数個数は4*8*7=224 ... 8.この数が8桁の場合、奇数個数は4*8*8*8*8*8*8*7(順に最下位から1位) 例:
上記のインスタンスの実行出力の結果は、次のとおりです.
読んでくれてありがとう.心を込めて悟ってください.勉强好きなあなたに助けてほしい!分かち合うのも1种の楽しみです!!!リレーをお願いします...
クリックして原文を見て、ありがとうございます!
プログラム分析:
この問題は実は配列の組み合わせの問題で、この数をsun=a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8とし、a 1-a 8はこの数のあるビットの数値を表し、1つの数の最後のビットが奇数である場合、この数は必ず奇数であり、前のビットがどんな数字であるかにかかわらず.最後の桁数が偶数の場合、この数は必ず偶数です.
a 1-a 8は0-7という8つの数字を取ることができ、トップ数字は0ではありません.
この数が1桁から8桁までの奇数の数を統計します.
1 #include
2 int main(int agrc, char*agrv[])
3 {
4 long sum = 4, s = 4;//sum 4 , 4
5 int j;
6 for (j = 2; j <= 8; j++)
7 {
8 printf("%d %ld
", j-1, s);
9 if (j <= 2)
10 s *= 7;
11 else
12 s *= 8;
13 sum += s;
14 }
15 printf("%d %ld
", j-1, s);
16 printf(" :%ld
", sum);
17 // system("pause");
18 return 0;
19 }
上記のインスタンスの実行出力の結果は、次のとおりです.
1 4
2 28
3 224
4 1792
5 14336
6 114688
7 917504
8 7340032
:8388608
読んでくれてありがとう.心を込めて悟ってください.勉强好きなあなたに助けてほしい!分かち合うのも1种の楽しみです!!!リレーをお願いします...
クリックして原文を見て、ありがとうございます!