1から100万のCで合計を見つける方法は?私は符号なしlong longデータ型(以下の私のコード)を使ってみましたが、それは500,000,000,000
を出力します。正しい値は500,000,500,000
です。1から100万のCで合計を見つける方法は?
unsigned long long sum = 0;
for(int i=0;i<1000000;i++)
sum += (unsigned long long)i;
printf("%llu",sum);
1から100万のCで合計を見つける方法は?私は符号なしlong longデータ型(以下の私のコード)を使ってみましたが、それは500,000,000,000
を出力します。正しい値は500,000,500,000
です。1から100万のCで合計を見つける方法は?
unsigned long long sum = 0;
for(int i=0;i<1000000;i++)
sum += (unsigned long long)i;
printf("%llu",sum);
これで正しい答えが得られます。あなたの例では、0〜999,999の合計が見つかりました。私もあなたのために不必要な鋳造を削除しました。
unsigned long long sum = 0;
for (unsigned long long i = 1; i <= 1000000; i++) sum += i;
printf("%llu", sum);
コーディング契約は「1〜100万」でした。マジックナンバー「1000001」を構成するコードでこれらの定数を使用する方が良いでしょう。 – chux
0から999999までのすべての数字を合計します。結果はいくつかの奇妙なものです。これにより
あなたは正しいものを取得する必要があります
unsigned long long sum=0;
for(unsigned long long i=1;i<=1000000;i++){
sum+=i;
}
は 'i <1000001 'でなければなりません。 –
i <= 1000000は正常に動作します。 –
@yellowantphilあなたは正しいです、脳はスリップします。 –
私はすべての反復を唱えるのはなぜ?どうして私は、ゲット・ゴーから期待されるタイプにしないの?そして、1000000を含める場合は、終了条件に '<='を使用することをお奨めします。 – Carcigenicate
https://en.wikipedia.org/wiki/Arithmetic_progression閉じられた式を使用するので、何度も繰り返し処理する必要はありません。この場合、(1 + 1000000)* 1000000/2 –
for(unsigned long long i = 1; i <1000001; i ++)の場合、正しい結果が得られます。あなたがやっていることは、私が信じる0〜999,999の合計を加えることです。 –