WA卡关之uva202(解决问题后已AC)

    xiaoxiao2021-03-25  185

    #include <iostream> using namespace std; int main() {     int m,n,i;     while ((cin>>m>>n))     {         int a[10000]= {0},b[10000]= {0};         int k,cycle,k1,flag=0;         k=m%n;         k1=m/n;         cout<<m<<"/"<<n<<" = "<<k1<<".";         if(k==0)         {             cout<<"(0)"<<endl;             cycle=1;         }         else         {             int i1,i2;             for(i=1; i<10000; i++)             {                 k=m%n;                 m=10*k;                 k1=m/n;                 b[i]=k1;                 a[i]=m;                 for(i1=1; i1<i; i1++)                 {                     if(a[i]==a[i1])                     {                         cycle=i-i1;                         flag=1;                         break;                     }                 }                 if(flag==1)                     break;             }             for(i2=1; i2<=i1-1; i2++)                 cout<<b[i2];             cout<<"(";             if(cycle<=50)                 for(i2=i1; i2<=i1+cycle-1; i2++)                     cout<<b[i2];             else             {                 for(i2=i1; i2<=i1+50-1; i2++)                     cout<<b[i2];                     cout<<"...";             }             cout<<")\n";         }         cout<<"   "<<cycle<<" = number of digits in repeating cycle\n\n";     }     return 0;

    }

    错误分析:当1/2999会产生1300位多的小数,会造成原本只有1000位的数组超标,因此改进为10000位

    转载请注明原文地址: https://ju.6miu.com/read-1802.html

    最新回复(0)