#18105: 請問我哪裡錯了


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
e273. 微分入門課 -- π | From: [114.24.4.158] | 發表日期 : 2019-06-17 12:36

#include <cstdio>
using namespace std;
int main() {
char a[4]={0};
while(fgets(a,sizeof(a), stdin)){
int c=0, b[c];
for(int i=0;i<=sizeof(a);i++){
if(a[i]==0)break;
c*=10;
c+=a[i]-'0';
printf("%d\n", c);
}
c/=10;
if(c!=1){
for(int i=c-1;i>=0;i--){
scanf("%d", &b[i]);
b[i]*=i;
}
for(int i=c-1;i>0;i--){
printf("%d ", b[i]);
}
printf("\n");
}
else{
scanf("%d", &b[0]);
printf("0\n");
}
}
}
 
#18106: Re:請問我哪裡錯了


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
e273. 微分入門課 -- π | From: [111.246.59.200] | 發表日期 : 2019-06-17 12:49

 

50% 就是不夠快。
這個時候就是各種寫法都可以上場試試的時候。

這一題,我覺得用乘法都很奢侈,

所以我把可能相乘的值都先存起來,然後用查表法。

 

 

 
#18108: Re:請問我哪裡錯了


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
e273. 微分入門課 -- π | From: [114.24.4.158] | 發表日期 : 2019-06-17 12:59

 

50% 就是不夠快。
這個時候就是各種寫法都可以上場試試的時候。

這一題,我覺得用乘法都很奢侈,

所以我把可能相乘的值都先存起來,然後用查表法。

 

 

建表是不是要建很多???


 
#18110: Re:請問我哪裡錯了


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
e273. 微分入門課 -- π | From: [111.246.59.200] | 發表日期 : 2019-06-17 13:27

我不知道 cpp 怎解

在 python 我建了 50 x 1000

 
#18111: Re:請問我哪裡錯了


jackyname1@gmail.com (☆♬○♩程式家小崴●♪✧♩)

學校 : 基隆市私立二信高級中學
編號 : 77382
來源 : [114.32.51.178]
最後登入時間 :
2022-04-12 19:45:18
e273. 微分入門課 -- π | From: [220.137.21.92] | 發表日期 : 2019-06-17 14:13

我不知道 cpp 怎解

在 python 我建了 50 x 1000

>>>> 不行耶 !! >_< 這樣要 1.1 sec 

#include <stdio.h>

#include <iostream>

 

using namespace std;

 

int main() {

    int n,temp;

    

    int table[50][1000];

    for(int i=0;i<50;i++)

        for(int j=0;j<1000;j++){

            table[i][j]=i*j;

        }

    

    

    while(scanf("%d",&n)!=EOF){

            for(int i=n-1;i>=1;i--){

                scanf("%d",&temp);

                printf("%d ",table[temp][i]);

            }

            scanf("%d",&temp);

            

            if(n==1)

            putchar('0');

            

            putchar('\n');

    }

    

    

    

    return 0;

}

 

 
#18112: Re:請問我哪裡錯了


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [1.168.27.116]
最後登入時間 :
2024-03-31 17:58:15
e273. 微分入門課 -- π | From: [111.246.59.200] | 發表日期 : 2019-06-17 14:50

我不知道 cpp 怎解

在 python 我建了 50 x 1000

>>>> 不行耶 !! >_< 這樣要 1.1 sec 

#include

#include

 

using namespace std;

 

int main() {

    int n,temp;

    

    int table[50][1000];

    for(int i=0;i<50;i++)

        for(int j=0;j<1000;j++){

            table[i][j]=i*j;

        }

    

    

    while(scanf("%d",&n)!=EOF){

            for(int i=n-1;i>=1;i--){

                scanf("%d",&temp);

                printf("%d ",table[temp][i]);

            }

            scanf("%d",&temp);

            

            if(n==1)

            putchar('0');

            

            putchar('\n');

    }

    

    

    

    return 0;

}

 

請問你如果沒建表
直接 temp * i 是幾秒


 

 
#18114: Re:請問我哪裡錯了


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
e273. 微分入門課 -- π | From: [114.24.4.158] | 發表日期 : 2019-06-17 16:14

我不知道 cpp 怎解

在 python 我建了 50 x 1000

>>>> 不行耶 !! >_< 這樣要 1.1 sec 

#include

#include

 

using namespace std;

 

int main() {

    int n,temp;

    

    int table[50][1000];

    for(int i=0;i<50;i++)

        for(int j=0;j<1000;j++){

            table[i][j]=i*j;

        }

    

    

    while(scanf("%d",&n)!=EOF){

            for(int i=n-1;i>=1;i--){

                scanf("%d",&temp);

                printf("%d ",table[temp][i]);

            }

            scanf("%d",&temp);

            

            if(n==1)

            putchar('0');

            

            putchar('\n');

    }

    

    

    

    return 0;

}

 

請問你如果沒建表
直接 temp * i 是幾秒


 

#include <cstdio>
using namespace std;
int main() {
char a[4]={0};
while(fgets(a,sizeof(a), stdin)){
int c=0, b[c];
for(int i=0;i<=sizeof(a);i++){
if(a[i]==0)break;
c*=10;
c+=a[i]-'0';
printf("%d\n", c);
}
c/=10;
if(c!=1){
for(int i=c-1;i>=0;i--){
scanf("%d", &b[i]);
b[i]*=i;
}
for(int i=c-1;i>0;i--){
printf("%d ", b[i]);
}
printf("\n");
}
else{
scanf("%d", &b[0]);
printf("0\n");
}
}
}
這樣1.1s



 
#18115: Re:請問我哪裡錯了


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
e273. 微分入門課 -- π | From: [114.24.4.158] | 發表日期 : 2019-06-17 16:15

我不知道 cpp 怎解

在 python 我建了 50 x 1000

>>>> 不行耶 !! >_< 這樣要 1.1 sec 

#include

#include

 

using namespace std;

 

int main() {

    int n,temp;

    

    int table[50][1000];

    for(int i=0;i<50;i++)

        for(int j=0;j<1000;j++){

            table[i][j]=i*j;

        }

    

    

    while(scanf("%d",&n)!=EOF){

            for(int i=n-1;i>=1;i--){

                scanf("%d",&temp);

                printf("%d ",table[temp][i]);

            }

            scanf("%d",&temp);

            

            if(n==1)

            putchar('0');

            

            putchar('\n');

    }

    

    

    

    return 0;

}

 

借我程式碼,OK???

 
#18116: Re:請問我哪裡錯了


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
e273. 微分入門課 -- π | From: [114.24.4.158] | 發表日期 : 2019-06-17 16:41

我不知道 cpp 怎解

在 python 我建了 50 x 1000

>>>> 不行耶 !! >_< 這樣要 1.1 sec 

#include

#include

 

using namespace std;

 

int main() {

    int n,temp;

    

    int table[50][1000];

    for(int i=0;i<50;i++)

        for(int j=0;j<1000;j++){

            table[i][j]=i*j;

        }

    

    

    while(scanf("%d",&n)!=EOF){

            for(int i=n-1;i>=1;i--){

                scanf("%d",&temp);

                printf("%d ",table[temp][i]);

            }

            scanf("%d",&temp);

            

            if(n==1)

            putchar('0');

            

            putchar('\n');

    }

    

    

    

    return 0;

}

 

借我程式碼,OK???

好像都是1.1s


 
#18121: Re:請問我哪裡錯了


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
e273. 微分入門課 -- π | From: [114.42.215.175] | 發表日期 : 2019-06-17 21:30

我不知道 cpp 怎解

在 python 我建了 50 x 1000

>>>> 不行耶 !! >_< 這樣要 1.1 sec 

#include

#include

 

using namespace std;

 

int main() {

    int n,temp;

    

    int table[50][1000];

    for(int i=0;i<50;i++)

        for(int j=0;j<1000;j++){

            table[i][j]=i*j;

        }

    

    

    while(scanf("%d",&n)!=EOF){

            for(int i=n-1;i>=1;i--){

                scanf("%d",&temp);

                printf("%d ",table[temp][i]);

            }

            scanf("%d",&temp);

            

            if(n==1)

            putchar('0');

            

            putchar('\n');

    }

    

    

    

    return 0;

}

 

借我程式碼,OK???

好像都是1.1s


我沒建表:

AC (0.1s, 60KB)

 
#18126: Re:請問我哪裡錯了


314159265358979323846264338327 ... (少年π)

學校 : 臺北市私立延平高級中學
編號 : 69058
來源 : [223.137.74.225]
最後登入時間 :
2024-04-18 19:26:56
e273. 微分入門課 -- π | From: [203.72.178.252] | 發表日期 : 2019-06-18 12:15

我不知道 cpp 怎解

在 python 我建了 50 x 1000

c++可以不用建表

不過建表理論上來說會比較快,只是差距並不明顯,查表的動作也還有優化的空間

但關鍵還是在優化I/O

python建表是因為它的乘法有點太慢了

 
#18127: Re:請問我哪裡錯了


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
e273. 微分入門課 -- π | From: [203.72.178.252] | 發表日期 : 2019-06-18 14:45

我不知道 cpp 怎解

在 python 我建了 50 x 1000

c++可以不用建表

不過建表理論上來說會比較快,只是差距並不明顯,查表的動作也還有優化的空間

但關鍵還是在優化I/O

python建表是因為它的乘法有點太慢了

c++建表加優化:

AC (0.1s, 13.6MB)

 

 
ZeroJudge Forum