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


40475024H (108電機)


#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 (我好弱)


#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)


 

建議直接把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