#4779: 請問如何改善演算效率?


hchs9910734 (雨昕)

學校 : 國立新竹高級中學
編號 : 15036
來源 : [180.177.1.171]
最後登入時間 :
2021-10-01 00:17:56
d096. 00913 - Joana and the Odd Numbers -- UVa913 | From: [123.110.102.60] | 發表日期 : 2011-01-22 19:38


                                 
#include <stdio.h> 
#include <stdlib.h>
#include <string.h> 
#include <math.h>
int main(void)
{
    long long int a,b,c,d,e,f,i,j;a=0;b=0;c=0;d=0;e=0;f=0;
    while((scanf("%lld",&a))!=EOF){ 
                                 b=(a-1) /2+1;//b是總共有幾行 
                                 for(i=1;i<2*b;i+=2)c+=i;//c是:最後一行的最後一個數字是第幾個 
                                 d=2*c-1;//最後一個數字 
                                 e=2*c-3;//倒數第二個數 
                                 f=2*c-5;//倒數第三個數 
                                 printf("%lld\n",d+e+f);
                                 a=0;b=0;c=0;d=0;e=0;f=0;
                                 }
}
 
在第一個測資會逾時
打了9個五就要接近1S才算的出來
請各位給小弟一個方向 
                   
 
#4780: Re:請問如何改善演算效率?


YogiBear (test)

學校 : 國立臺中技術學院
編號 : 9150
來源 : [1.168.28.108]
最後登入時間 :
2023-08-20 22:48:07
d096. 00913 - Joana and the Odd Numbers -- UVa913 | From: [122.117.89.202] | 發表日期 : 2011-01-23 02:02


                                 
#include  
#include
#include  
#include
int main(void)
{
    long long int a,b,c,d,e,f,i,j;a=0;b=0;c=0;d=0;e=0;f=0;
    while((scanf("%lld",&a))!=EOF){ 
                                 b=(a-1) /2+1;//b是總共有幾行 
                                 for(i=1;i<2*b;i+=2)c+=i;//c是:最後一行的最後一個數字是第幾個 
                                 d=2*c-1;//最後一個數字 
                                 e=2*c-3;//倒數第二個數 
                                 f=2*c-5;//倒數第三個數 
                                 printf("%lld\n",d+e+f);
                                 a=0;b=0;c=0;d=0;e=0;f=0;
                                 }
}
 
在第一個測資會逾時
打了9個五就要接近1S才算的出來
請各位給小弟一個方向 
                   


我是用梯形公式 
#4786: Re:請問如何改善演算效率?


popular10347 (ICPC// 哪時能唸到高等演算法T^T)

學校 : 元智大學
編號 : 11351
來源 : [1.169.118.99]
最後登入時間 :
2012-10-29 00:22:54
d096. 00913 - Joana and the Odd Numbers -- UVa913 | From: [125.231.161.15] | 發表日期 : 2011-01-24 00:57


                                 
#include  
#include
#include  
#include
int main(void)
{
    long long int a,b,c,d,e,f,i,j;a=0;b=0;c=0;d=0;e=0;f=0;
    while((scanf("%lld",&a))!=EOF){ 
                                 b=(a-1) /2+1;//b是總共有幾行 
                                 for(i=1;i<2*b;i+=2)c+=i;//c是:最後一行的最後一個數字是第幾個 
                                 d=2*c-1;//最後一個數字 
                                 e=2*c-3;//倒數第二個數 
                                 f=2*c-5;//倒數第三個數 
                                 printf("%lld\n",d+e+f);
                                 a=0;b=0;c=0;d=0;e=0;f=0;
                                 }
}
在第一個測資會逾時
打了9個五就要接近1S才算的出來
請各位給小弟一個方向 
                   


我是用梯形公式

這是我的code,你先參考看看 (( 雖然速度不快Q_Q

#include<iostream>
using namespace std;

int main()
{
      unsigned long long n;

     while(cin >> n)
    {
           unsigned long long odd;
           unsigned long long sum=0;

           odd=(1+n)*(1+n)/4;
           odd=2*odd-1;
          for(int i=0;i<6;i+=2)
                sum+=odd-i;

          cout << sum << endl;
   }

     return 0;
}

基本上還是觀察數字之間的關係,多寫幾個就可以了 :)

 
#4832: Re:請問如何改善演算效率?


hchs9910734 (雨昕)

學校 : 國立新竹高級中學
編號 : 15036
來源 : [180.177.1.171]
最後登入時間 :
2021-10-01 00:17:56
d096. 00913 - Joana and the Odd Numbers -- UVa913 | From: [123.110.101.148] | 發表日期 : 2011-02-01 09:54


                                 
#include  
#include
#include  
#include
int main(void)
{
    long long int a,b,c,d,e,f,i,j;a=0;b=0;c=0;d=0;e=0;f=0;
    while((scanf("%lld",&a))!=EOF){ 
                                 b=(a-1) /2+1;//b是總共有幾行 
                                 for(i=1;i<2*b;i+=2)c+=i;//c是:最後一行的最後一個數字是第幾個 
                                 d=2*c-1;//最後一個數字 
                                 e=2*c-3;//倒數第二個數 
                                 f=2*c-5;//倒數第三個數 
                                 printf("%lld\n",d+e+f);
                                 a=0;b=0;c=0;d=0;e=0;f=0;
                                 }
}
在第一個測資會逾時
打了9個五就要接近1S才算的出來
請各位給小弟一個方向 
                   


我是用梯形公式

這是我的code,你先參考看看 (( 雖然速度不快Q_Q

#include
using namespace std;

int main()
{
      unsigned long long n;

     while(cin >> n)
    {
           unsigned long long odd;
           unsigned long long sum=0;

           odd=(1+n)*(1+n)/4;
           odd=2*odd-1;
          for(int i=0;i<6;i+=2)
                sum+=odd-i;

          cout << sum << endl;
   }

     return 0;
}

基本上還是觀察數字之間的關係,多寫幾個就可以了 :) 

謝謝各位大大

我再試試看 

 
ZeroJudge Forum