私はスキャンしたすべての整数の中で最小の整数の周波数を見つけなければならないという問題をコードする必要があります。私は配列の型をsize_t
であると宣言しました。私のマシン上には8バイトのsizeofがあり、データ型はunsigned long
でしたが、私のコードのハッキーに最終的に実行時エラーが出ます。配列に10^9の整数を格納するために使用するデータ型はどれですか?
3つのテストケースが指定された入力を通過したが、テストケースが残っていないためコードに問題はないことを確認して確認しました。
私が使用すべき適切なデータタイプで案内してください。問題は、リンクの下に記載されている:
コード:
#include <stdio.h>
#include<stdlib.h>
size_t a[100001]={0};
int main()
{
int test_no,i;
scanf(" %d",&test_no);
for(i=0;i<test_no;i++)
{
int j,n ;
size_t x,min;
scanf(" %d",&n);
for(j=0;j<n;j++)
{
scanf(" %zu",&x);
a[x]++;
if(j==0)
{
min=x;
}
if(x<=min)
{
min=x;
}
}
if(a[min]%2==0 && a[min]!=0) //In case if every integer occurs only once so all entries of count will be 0 , so he'll be unlucky
{
printf("Unlucky \n");
}
else
{
printf("Lucky \n") ;
}
}
return 0;
}
通常の4バイトの 'int型あなたの問題は大丈夫です。あなたの問題は、 'a [x]'に数字xの出現を格納することですが、リンクによれば、それぞれの 'x'(またはそれが置かれるごとにAᵢ)は109になることができます配列の次元は105です。 (ヒント:ここでは配列は必要ありません。なぜなら、minium要素の出現を追跡する必要があるからです。) –
テストケース間で 'a'をクリアしません。恐ろしいです。 – unwind
'a'はなぜグローバルなのですか? – CinCout