ホームページ  >  記事  >  バックエンド開発  >  C 言語では、N 回移動した後の配列内の 1 の数を数えます。

C 言語では、N 回移動した後の配列内の 1 の数を数えます。

WBOY
WBOY転載
2023-09-11 16:25:021194ブラウズ

C 言語では、N 回移動した後の配列内の 1 の数を数えます。

サイズ 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.

次のプログラムで使用されるメソッドは次のとおりです。

0 と整数 N で初期化された整数配列 Arr[] を使用します。

  • 関数 Onecount は、Arr[] とそのサイズ N を入力として受け取り、no を返します。 N が移動した後の最後の配列の数値。

  • for ループは 1 から始まり、配列の最後まで進みます。

  • 各 i はステップ i を表します。

  • ネストされた for ループはインデックス 0 から始まり、配列の最後まで進みます。

  • i 番目の移動ごとに、インデックス j が i の倍数 (j%i==0) の場合、その位置の 0 を 1 に置き換えます。

  • 各 i に対してこのプロセスを配列の終わりまで続けます。

  • Note
  • - インデックス付けは i=1,j=1 から始まりますが、配列のインデックス付けは 0 から N-1 までとなります。したがって、arr[j1] は毎回変換されます。
  • 最後に、配列全体を再度走査し、番号を数えます。 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&#39;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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。