2016-10-11 8 views
-8
#include <stdio.h> 
int main() 
{ 
    int t, w; 
    long int n, m, c, i, j, f = 0; 
    long long int b, s = 1; 
    scanf("%d",&t); 
    for(w = 1; w <= t; w++) 
    { 
     f = 0; 
     s = 1; 
     scanf("%ld %ld %ld",&n,&m,&c); 
     b = (long long int) n * m; 

     if (c > b) { 
      printf("%d\n",0); 
     } else { 
      for(i = 1; i <= n; i++) { 
       for(j = 1; j <= m; j++) { 
        s = i * j; 
        if (s == c) { 
         f++; 
         s = 1; 
        } 
       } 
       printf("%ld\n",f); 
      } 
     } 
     return 0; 
    } 
} 

入力は、次のとおりです。大きな入力のためにこのCプログラムをデバッグするには?

1 
1000000 
1000000 
1000000 

しかし出力で、それはfの値を示すものではありません。なぜ出力にfの値が表示されないのですか?私が使用したデータ型に関する問題はありますか?

+2

変数 't、w、n、m、c、i、j、f、b、s'を真剣に指定しましたか?どのようにこのコードの意味を理解するはずですか? – abelenky

+1

'long'は一般的に32ビットのデータ型なので、+/- 2147483647です。あなたは' 1000000000000'でそれを過ぎています。あなたはおそらく 'long long'を望んでいます。これは64ビットでなければなりません。 –

+0

どうすればそれを得ることができますか? @MarcB –

答えて

1

少なくともこの部分は疑わしいようです。あなたが書いた

if(s==c) 
{ 
    f++; 
    s=1; 
} 

しかし、あなたが実際に書いたことは次のとおりです:

if(s==c) 
    f++; 
    s=1; 

をので、あなたのインデントのは、私はあなたが書くしようとしていると考えに基づいて

if(s==c) 
{ 
    f++; 
} 
s=1; 

あなたのインデント、私はそれがあなたが意図したものではないと推測しています。

+0

の場合にのみfの値を表示しますが、{}は必要ありません。 –

+1

abelenkyはそれを知っています。彼は "疑わしい"と書いた –

+0

しかしそこに疑わしいものはありません。 –

関連する問題