#10371: 一直TEL該如何修正?


40475024H (108電機)

學校 : 國立臺灣師範大學
編號 : 53233
來源 : [61.60.218.218]
最後登入時間 :
2016-03-13 14:05:04
a059. 完全平方和 | From: [61.60.221.92] | 發表日期 : 2015-10-19 21:16

#include<stdio.h>

int main(){

int a,b,c;

int total=0;

int n;

int T;

int i;

int d;

int e;

int f;

scanf("%d",&T);

for(n=2,i=1;i<=T;i++){

scanf("%d%d",&a,&b);

while(n^2<a&&n^2<b){

n++;

}

while(n^2>a&&n^2<b||n^2>b&&n^2<a){

total=total+n^2;

n++;

}

printf("%d",total);

if(n^2>a&&n^2>b){

c=0;

printf("%d",c);

}

if(a>1&&a<=3&&b>1&&b<=3){

d=0;

printf("%d",d);}

if(a>=1&&a<=3&&b>=1&&b<=3){

e=1;

printf("%d",e);}

if(a==0&&b==0){

f=0;

printf("%d",f);

}

}

return 0;

 
#12107: Re:一直TEL該如何修正?


lessonone (我好弱)

學校 : 國立彰化師範大學
編號 : 66494
來源 : [60.251.182.5]
最後登入時間 :
2017-07-15 14:42:00
a059. 完全平方和 | From: [59.124.228.83] | 發表日期 : 2017-06-02 16:08

#include

int main(){

int a,b,c;

int total=0;

int n;

int T;

int i;

int d;

int e;

int f;

scanf("%d",&T);

for(n=2,i=1;i<=T;i++){

scanf("%d%d",&a,&b);

while(n^2<a&&n^2<b){

n++;

}

while(n^2>a&&n^2<b||n^2>b&&n^2<a){

total=total+n^2;

n++;

}

printf("%d",total);

if(n^2>a&&n^2>b){

c=0;

printf("%d",c);

}

if(a>1&&a<=3&&b>1&&b<=3){

d=0;

printf("%d",d);}

if(a>=1&&a<=3&&b>=1&&b<=3){

e=1;

printf("%d",e);}

if(a==0&&b==0){

f=0;

printf("%d",f);

}

}

return 0;

建議直接把1000以內的完全平方數列在一個陣列中


然後用if去判斷a b 範圍內的完全平方數是否在陣列中

 

應該就不會TLE了吧

 
#13617: Re:一直TEL該如何修正?


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a059. 完全平方和 | From: [218.164.125.30] | 發表日期 : 2018-03-29 15:48

 

建議直接把1000以內的完全平方數列在一個陣列中


然後用if去判斷a b 範圍內的完全平方數是否在陣列中

 

應該就不會TLE了吧


比如

int squares[] = {
      1,   4,   9,  16,  25,  36,  49,  64,  81, 100,
    121, 144, 169, 196, 225, 256, 289, 324, 361, 400,
    441, 484, 529, 576, 625, 676, 729, 784, 841, 900,
    961}; // size = 31

 

 
ZeroJudge Forum