#16400: 求教學


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
c060. 00392 - Polynomial Showdown -- UVa392 | From: [111.252.73.184] | 發表日期 : 2018-12-29 15:06

#include<cstdio>
using namespace std;

int main ()
{
while (1)
{
int a[9],x=0;
scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
for (int i=0;i<9;i++)
{
x=10-i-2;
if (a[i]!=0 && a[i]!=1 && a[i]!=-1)
{
printf("%dx^%d",a[i],x);
a[i]=0;
break;
}
else if (a[i]==1)
{
printf("x^%d",x);
a[i]=0;
break;
}
else if (a[i]==-1)
{
printf("-x^%d",x);
a[i]=0;
break;
}
}
for (int i=10-x-1;i<9;i++)
{
x-=1;
if (x==0 && a[i]>0)
printf(" + %d",a[i]);
else if (x==0 && a[i]<0)
printf(" - %d",-a[i]);
else if (x==1 && a[i]==1)
printf(" + x");
else if (x==1 && a[i]==-1)
printf(" - x");
else if (x==1 && a[i]<0)
printf(" - %dx",-a[i]);
else if (x==1 && a[i]>0)
printf(" + %dx",a[i]);
else if (a[i]>0 && a[i]!=1 && x!=1)
printf(" + %dx^%d",a[i],x);
else if (a[i]==1 && x!=1)
printf(" + x^%d",x);
else if (a[i]<0 &&a[i]!=-1 && x!=1)
printf(" - %dx^%d",-a[i],x);
else if (a[i]==-1 && x!=1)
printf(" - x^%d",x);
}
printf("\n");
}
}

請問這樣有方法優化嗎

 
#16401: Re:求教學


314159265358979323846264338327 ... (少年π)

學校 : 臺北市私立延平高級中學
編號 : 69058
來源 : [223.136.179.30]
最後登入時間 :
2024-04-29 19:11:35
c060. 00392 - Polynomial Showdown -- UVa392 | From: [223.137.73.62] | 發表日期 : 2018-12-29 16:20

#include
using namespace std;

int main ()
{
while (1)
{
int a[9],x=0;
scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
for (int i=0;i<9;i++)
{
x=10-i-2;
if (a[i]!=0 && a[i]!=1 && a[i]!=-1)
{
printf("%dx^%d",a[i],x);
a[i]=0;
break;
}
else if (a[i]==1)
{
printf("x^%d",x);
a[i]=0;
break;
}
else if (a[i]==-1)
{
printf("-x^%d",x);
a[i]=0;
break;
}
}
for (int i=10-x-1;i<9;i++)
{
x-=1;
if (x==0 && a[i]>0)
printf(" + %d",a[i]);
else if (x==0 && a[i]<0)
printf(" - %d",-a[i]);
else if (x==1 && a[i]==1)
printf(" + x");
else if (x==1 && a[i]==-1)
printf(" - x");
else if (x==1 && a[i]<0)
printf(" - %dx",-a[i]);
else if (x==1 && a[i]>0)
printf(" + %dx",a[i]);
else if (a[i]>0 && a[i]!=1 && x!=1)
printf(" + %dx^%d",a[i],x);
else if (a[i]==1 && x!=1)
printf(" + x^%d",x);
else if (a[i] printf(" - %dx^%d",-a[i],x);
else if (a[i]==-1 && x!=1)
printf(" - x^%d",x);
}
printf("\n");
}
}

請問這樣有方法優化嗎

while(1)是無窮迴圈
會無法跳出迴圈
請用對的方式判斷EOF

 

 
#16411: Re:求教學


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
c060. 00392 - Polynomial Showdown -- UVa392 | From: [111.252.73.184] | 發表日期 : 2018-12-29 19:24

#include
using namespace std;

int main ()
{
while (1)
{
int a[9],x=0;
scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
for (int i=0;i<9;i++)
{
x=10-i-2;
if (a[i]!=0 && a[i]!=1 && a[i]!=-1)
{
printf("%dx^%d",a[i],x);
a[i]=0;
break;
}
else if (a[i]==1)
{
printf("x^%d",x);
a[i]=0;
break;
}
else if (a[i]==-1)
{
printf("-x^%d",x);
a[i]=0;
break;
}
}
for (int i=10-x-1;i<9;i++)
{
x-=1;
if (x==0 && a[i]>0)
printf(" + %d",a[i]);
else if (x==0 && a[i]<0)
printf(" - %d",-a[i]);
else if (x==1 && a[i]==1)
printf(" + x");
else if (x==1 && a[i]==-1)
printf(" - x");
else if (x==1 && a[i]<0)
printf(" - %dx",-a[i]);
else if (x==1 && a[i]>0)
printf(" + %dx",a[i]);
else if (a[i]>0 && a[i]!=1 && x!=1)
printf(" + %dx^%d",a[i],x);
else if (a[i]==1 && x!=1)
printf(" + x^%d",x);
else if (a[i] printf(" - %dx^%d",-a[i],x);
else if (a[i]==-1 && x!=1)
printf(" - x^%d",x);
}
printf("\n");
}
}

請問這樣有方法優化嗎

while(1)是無窮迴圈
會無法跳出迴圈
請用對的方式判斷EOF

 



#include<cstdio>

 

int main ()

{

   int a[9];

   while (scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8])!=EOF)

   {

      int x=0;

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

      {

         x=10-i-2;

         if (x==0 && a[i]>0)

         {

            printf("%d",a[i]);

            a[i]=0;

            break;

         }

         else if (x==0 && a[i]<0)

         {

            printf("%d",a[i]); 

            a[i]=0;

            break;

         }

         else if (x==1 && a[i]==1)

         {

            printf("x");

            a[i]=0;

            break;

         }

         else if (x==1 && a[i]==-1)

         {

            printf("-x");

            a[i]=0;

            break;

         }

         else if (a[i]!=0 && a[i]!=1 && a[i]!=-1)

            {

            printf("%dx^%d",a[i],x);

            a[i]=0;

            break;

            }

         else if (a[i]==1)

            {

            printf("x^%d",x);

            a[i]=0;

            break;

            }

         else if (a[i]==-1)

            {

            printf("-x^%d",x);

            a[i]=0;

            break;

            }

         else if (a[i]==0 && x==0)

            {

               printf("%d",a[i]);

               break;

            }

      }

      for (int i=10-x-1;i<9;i++)

      {

         x-=1;

         if (x==0 && a[i]>0)

            printf(" + %d",a[i]);

         else if (x==0 && a[i]<0)

            printf(" - %d",-a[i]); 

         else if (x==1 && a[i]==1)

            printf(" + x");

         else if (x==1 && a[i]==-1)

            printf(" - x");

         else if (x==1 && a[i]<0)

            printf(" - %dx",-a[i]);

         else if (x==1 && a[i]>0)

            printf(" + %dx",a[i]);

         else if (a[i]>0 && a[i]!=1 && x!=1)

            printf(" + %dx^%d",a[i],x);

         else if (a[i]==1 && x!=1)

            printf(" + x^%d",x);

         else if (a[i]<0 &&a[i]!=-1 && x!=1)

            printf(" - %dx^%d",-a[i],x);

         else if (a[i]==-1 && x!=1)

            printf(" - x^%d",x);

      }

      printf("\n");

   }

}

改成這樣可以了

 
#16412: Re:求教學


asddzxcc1856 (嚕踢)

學校 : 國立中興大學
編號 : 86097
來源 : [61.223.99.184]
最後登入時間 :
2023-08-21 21:25:52
c060. 00392 - Polynomial Showdown -- UVa392 | From: [111.252.73.184] | 發表日期 : 2018-12-29 19:25

#include
using namespace std;

int main ()
{
while (1)
{
int a[9],x=0;
scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8]);
for (int i=0;i<9;i++)
{
x=10-i-2;
if (a[i]!=0 && a[i]!=1 && a[i]!=-1)
{
printf("%dx^%d",a[i],x);
a[i]=0;
break;
}
else if (a[i]==1)
{
printf("x^%d",x);
a[i]=0;
break;
}
else if (a[i]==-1)
{
printf("-x^%d",x);
a[i]=0;
break;
}
}
for (int i=10-x-1;i<9;i++)
{
x-=1;
if (x==0 && a[i]>0)
printf(" + %d",a[i]);
else if (x==0 && a[i]<0)
printf(" - %d",-a[i]);
else if (x==1 && a[i]==1)
printf(" + x");
else if (x==1 && a[i]==-1)
printf(" - x");
else if (x==1 && a[i]<0)
printf(" - %dx",-a[i]);
else if (x==1 && a[i]>0)
printf(" + %dx",a[i]);
else if (a[i]>0 && a[i]!=1 && x!=1)
printf(" + %dx^%d",a[i],x);
else if (a[i]==1 && x!=1)
printf(" + x^%d",x);
else if (a[i] printf(" - %dx^%d",-a[i],x);
else if (a[i]==-1 && x!=1)
printf(" - x^%d",x);
}
printf("\n");
}
}

請問這樣有方法優化嗎

while(1)是無窮迴圈
會無法跳出迴圈
請用對的方式判斷EOF

 



#include

 

int main ()

{

   int a[9];

   while (scanf("%d%d%d%d%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8])!=EOF)

   {

      int x=0;

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

      {

         x=10-i-2;

         if (x==0 && a[i]>0)

         {

            printf("%d",a[i]);

            a[i]=0;

            break;

         }

         else if (x==0 && a[i]<0)

         {

            printf("%d",a[i]); 

            a[i]=0;

            break;

         }

         else if (x==1 && a[i]==1)

         {

            printf("x");

            a[i]=0;

            break;

         }

         else if (x==1 && a[i]==-1)

         {

            printf("-x");

            a[i]=0;

            break;

         }

         else if (a[i]!=0 && a[i]!=1 && a[i]!=-1)

            {

            printf("%dx^%d",a[i],x);

            a[i]=0;

            break;

            }

         else if (a[i]==1)

            {

            printf("x^%d",x);

            a[i]=0;

            break;

            }

         else if (a[i]==-1)

            {

            printf("-x^%d",x);

            a[i]=0;

            break;

            }

         else if (a[i]==0 && x==0)

            {

               printf("%d",a[i]);

               break;

            }

      }

      for (int i=10-x-1;i<9;i++)

      {

         x-=1;

         if (x==0 && a[i]>0)

            printf(" + %d",a[i]);

         else if (x==0 && a[i]<0)

            printf(" - %d",-a[i]); 

         else if (x==1 && a[i]==1)

            printf(" + x");

         else if (x==1 && a[i]==-1)

            printf(" - x");

         else if (x==1 && a[i]<0)

            printf(" - %dx",-a[i]);

         else if (x==1 && a[i]>0)

            printf(" + %dx",a[i]);

         else if (a[i]>0 && a[i]!=1 && x!=1)

            printf(" + %dx^%d",a[i],x);

         else if (a[i]==1 && x!=1)

            printf(" + x^%d",x);

         else if (a[i]

            printf(" - %dx^%d",-a[i],x);

         else if (a[i]==-1 && x!=1)

            printf(" - x^%d",x);

      }

      printf("\n");

   }

}

改成這樣可以了 謝謝~~




 
ZeroJudge Forum