サイズ N の配列を与えます。配列は最初はすべてゼロです。課題は数を数える事です。 N が移動した後の配列内の 1 の数。 N 番目の各ステップには、関連付けられたルールがあります。ルールは -
最初の移動 - 位置 1、2、3、4………….
番目の要素を変更します。 2 番目の動き - 位置 2、4、6、8... の要素を変更します。 ……..
最後の配列内の 1 の数を数えます。
Arr[]={ 0,0,0,0 } N=4
出力
Number of 1s in the array after N moves − 2
説明 - その後の移動後の配列-
Move 1: { 1,1,1,1 } Move 2: { 1,0,1,0 } Move 3: { 1,0,0,3 } Move 4: { 1,0,0,1 } Number of ones in the final array is 2.
入力
Arr[]={ 0,0,0,0,0,0} N=6
出力
Number of 1s in the array after N moves − 2
説明 - その後の移動後の配列-
Move 1: { 1,1,1,1,1,1,1 } Move 2: { 1,0,1,0,1,0,1 } Move 3: { 1,0,0,1,0,0,1 } Move 4: { 1,0,0,0,1,0,0 } Move 5: { 1,0,0,0,0,1,0 } Move 4: { 1,0,0,0,0,0,1 } Number of ones in the final array is 2.
次のプログラムで使用されるメソッドは次のとおりです。
関数 Onecount は、Arr[] とそのサイズ N を入力として受け取り、no を返します。 N が移動した後の最後の配列の数値。
for ループは 1 から始まり、配列の最後まで進みます。
各 i はステップ i を表します。
ネストされた for ループはインデックス 0 から始まり、配列の最後まで進みます。
i 番目の移動ごとに、インデックス j が i の倍数 (j%i==0) の場合、その位置の 0 を 1 に置き換えます。
各 i に対してこのプロセスを配列の終わりまで続けます。
最後に、配列全体を再度走査し、番号を数えます。 1 が含まれており、カウントに格納されます。
#include <stdio.h> int Onecount(int arr[], int N){ for (int i = 1; i <= N; i++) { for (int j = i; j <= N; j++) { // If j is divisible by i if (j % i == 0) { if (arr[j - 1] == 0) arr[j - 1] = 1; // Convert 0 to 1 else arr[j - 1] = 0; // Convert 1 to 0 } } } int count = 0; for (int i = 0; i < N; i++) if (arr[i] == 1) count++; // count number of 1's return count; } int main(){ int size = 6; int Arr[6] = { 0 }; printf("Number of 1s in the array after N moves: %d", Onecount(Arr, size)); return 0; }
上記のコードを実行すると、次の出力が生成されます-
Number of 1s in the array after N moves: 2
以上がC 言語では、N 回移動した後の配列内の 1 の数を数えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。