#2457: uVa過了,但是Zerojuddge卻WAˊˋ


ashspark (ggbb)

學校 : 不指定學校
編號 : 8168
來源 : [114.136.220.239]
最後登入時間 :
2024-04-27 19:36:09
c005. 10300 - Ecological Premium -- UVa10300 | From: [140.112.240.134] | 發表日期 : 2009-10-09 18:13

 不才我嘗試過很多遍,用C++或是C傳送,%lld 跟 %I64d也都送過一次

 但是在Zerojudge都沒辦法過ˊˋ 拜託高手幫我看一看哪邊出錯了?謝謝

#include<stdio.h>
int main()
{
int n,f,i;
scanf("%d",&n);
for(i=1;i<=n;i++)                                            {
scanf("%d",&f);
int array[20][20]={0};
int i1,i2,num;
long long int sum=0;

   for(i1=0;i1<f;i1++)   {
   for(i2=0;i2<3;i2++){
   scanf("%d",&num);
   array[i1][i2]=num;  } }
   
      for(i1=0;i1<f;i1++)                {
      sum=sum+array[i1][0]*array[i1][2]; }
      
      printf("%I64d\n",sum);

                                                             }
return 0;
}

 
#2462: Re:uVa過了,但是Zerojuddge卻WAˊˋ


bleed1979 (Bleed)

學校 : 不指定學校
編號 : 1489
來源 : [203.204.21.29]
最後登入時間 :
2021-05-02 22:12:13
c005. 10300 - Ecological Premium -- UVa10300 | From: [114.32.177.97] | 發表日期 : 2009-10-09 23:35

 不才我嘗試過很多遍,用C++或是C傳送,%lld 跟 %I64d也都送過一次

 但是在Zerojudge都沒辦法過ˊˋ 拜託高手幫我看一看哪邊出錯了?謝謝

#include
int main()
{
int n,f,i;
scanf("%d",&n);
for(i=1;i<=n;i++)                                            {
scanf("%d",&f);
int array[20][20]={0};
int i1,i2,num;
long long int sum=0;

   for(i1=0;i1
   for(i2=0;i2<3;i2++){
   scanf("%d",&num);
   array[i1][i2]=num;  } }
   
      for(i1=0;i1
      sum=sum+array[i1][0]*array[i1][2]; }
      
      printf("%I64d\n",sum);

                                                             }
return 0;
}

UVa那裡的sum不會超出int的範圍

不過ZJ的會

所以改成以下程式應該就會過了

sum=sum+(long long)array[i1][0]*array[i1][2];

 
#2464: Re:uVa過了,但是Zerojuddge卻WAˊˋ


ashspark (ggbb)

學校 : 不指定學校
編號 : 8168
來源 : [114.136.220.239]
最後登入時間 :
2024-04-27 19:36:09
c005. 10300 - Ecological Premium -- UVa10300 | From: [140.112.240.134] | 發表日期 : 2009-10-10 01:16

 不才我嘗試過很多遍,用C++或是C傳送,%lld 跟 %I64d也都送過一次

 但是在Zerojudge都沒辦法過ˊˋ 拜託高手幫我看一看哪邊出錯了?謝謝

#include
int main()
{
int n,f,i;
scanf("%d",&n);
for(i=1;i<=n;i++)                                            {
scanf("%d",&f);
int array[20][20]={0};
int i1,i2,num;
long long int sum=0;

   for(i1=0;i1
   for(i2=0;i2<3;i2++){
   scanf("%d",&num);
   array[i1][i2]=num;  } }
   
      for(i1=0;i1
      sum=sum+array[i1][0]*array[i1][2]; }
      
      printf("%I64d\n",sum);

                                                             }
return 0;
}

UVa那裡的sum不會超出int的範圍

不過ZJ的會

所以改成以下程式應該就會過了

sum=sum+(long long)array[i1][0]*array[i1][2];

還是沒過ˊˋ 就算寫sum=sum+(long long)array[i1][0]*array[i1][2];

或者在加改 long long int array[20][20] 都錯= =

 
#2465: Re:uVa過了,但是Zerojuddge卻WAˊˋ


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
c005. 10300 - Ecological Premium -- UVa10300 | From: [118.166.113.239] | 發表日期 : 2009-10-10 11:12

 不才我嘗試過很多遍,用C++或是C傳送,%lld 跟 %I64d也都送過一次

 但是在Zerojudge都沒辦法過ˊˋ 拜託高手幫我看一看哪邊出錯了?謝謝

還是沒過ˊˋ 就算寫sum=sum+(long long)array[i1][0]*array[i1][2];

或者在加改 long long int array[20][20] 都錯= =


下面是我幫你修改過的程式碼

不開陣列,一次抓三個值 a b c , sum += a*c

然後輸入輸出全部用 %lld 

 

#include <stdio.h>

 

int main() {

int n,f,i,j;

scanf("%d", &n );

for( i = 1 ; i <= n ; i++ ) {

scanf("%d", &f ); 

long long int a,b,c;

long long int sum = 0;

for( j = 0 ; j < f ; j++ ) {

scanf("%lld %lld %lld", &a, &b, &c );

sum += a*c;

}

printf("%lld\n", sum );

    }

return 0;

}

 

 
#2466: Re:uVa過了,但是Zerojuddge卻WAˊˋ


bleed1979 (Bleed)

學校 : 不指定學校
編號 : 1489
來源 : [203.204.21.29]
最後登入時間 :
2021-05-02 22:12:13
c005. 10300 - Ecological Premium -- UVa10300 | From: [114.32.177.97] | 發表日期 : 2009-10-10 12:59

 不才我嘗試過很多遍,用C++或是C傳送,%lld 跟 %I64d也都送過一次

 但是在Zerojudge都沒辦法過ˊˋ 拜託高手幫我看一看哪邊出錯了?謝謝

#include
int main()
{
int n,f,i;
scanf("%d",&n);
for(i=1;i<=n;i++)                                            {
scanf("%d",&f);
int array[20][20]={0};
int i1,i2,num;
long long int sum=0;

   for(i1=0;i1
   for(i2=0;i2<3;i2++){
   scanf("%d",&num);
   array[i1][i2]=num;  } }
   
      for(i1=0;i1
      sum=sum+array[i1][0]*array[i1][2]; }
      
      printf("%I64d\n",sum);

                                                             }
return 0;
}

UVa那裡的sum不會超出int的範圍

不過ZJ的會

所以改成以下程式應該就會過了

sum=sum+(long long)array[i1][0]*array[i1][2];

還是沒過ˊˋ 就算寫sum=sum+(long long)array[i1][0]*array[i1][2];

或者在加改 long long int array[20][20] 都錯= =

抱歉, 忘了跟你說, 除了改(long long)以外

sum要用%lld來輸出, 這樣就會過了

你可以試著更改原來的程式或是已有版友跟你說的更省記憶體的解法

 

 
#2469: Re:uVa過了,但是Zerojuddge卻WAˊˋ


ashspark (ggbb)

學校 : 不指定學校
編號 : 8168
來源 : [114.136.220.239]
最後登入時間 :
2024-04-27 19:36:09
c005. 10300 - Ecological Premium -- UVa10300 | From: [140.112.240.134] | 發表日期 : 2009-10-10 13:13

 不才我嘗試過很多遍,用C++或是C傳送,%lld 跟 %I64d也都送過一次

 但是在Zerojudge都沒辦法過ˊˋ 拜託高手幫我看一看哪邊出錯了?謝謝

#include
int main()
{
int n,f,i;
scanf("%d",&n);
for(i=1;i<=n;i++)                                            {
scanf("%d",&f);
int array[20][20]={0};
int i1,i2,num;
long long int sum=0;

   for(i1=0;i1
   for(i2=0;i2<3;i2++){
   scanf("%d",&num);
   array[i1][i2]=num;  } }
   
      for(i1=0;i1
      sum=sum+array[i1][0]*array[i1][2]; }
      
      printf("%I64d\n",sum);

                                                             }
return 0;
}

UVa那裡的sum不會超出int的範圍

不過ZJ的會

所以改成以下程式應該就會過了

sum=sum+(long long)array[i1][0]*array[i1][2];

還是沒過ˊˋ 就算寫sum=sum+(long long)array[i1][0]*array[i1][2];

或者在加改 long long int array[20][20] 都錯= =

抱歉, 忘了跟你說, 除了改(long long)以外

sum要用%lld來輸出, 這樣就會過了

你可以試著更改原來的程式或是已有版友跟你說的更省記憶體的解法

 


非常感謝樓上跟樓樓上的高手!終於AC了!我問題超多的 
ZeroJudge Forum