fangcheng.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //我是个傻逼
  2. #include <iostream>
  3. //我是个傻逼
  4. #include <math.h>
  5. using namespace std;
  6. int main()
  7. {
  8. double a,b,c,a2,a21,b1,x1,x2,gdelta,delta1,mum,den,mum1,den1;
  9. int qu=1,delta,delta2;
  10. cout<<"������a��b��c"<<endl;
  11. cin>>a>>b>>c;//����ϵ��
  12. cout<<a<<"x^2+"<<b<<"x+"<<c<<"=0"<<endl;
  13. delta=delta1=(b*b)-(4*a*c);
  14. cout<<"delta="<<delta<<endl;
  15. if (delta>=0&&(b*b)-(4*a*c)==floor((b*b)-(4*a*c)))//�жϦ��Ƿ�>=0�Լ��Ƿ�������
  16. {
  17. gdelta=sqrt(delta);
  18. if (gdelta==floor(gdelta))//�жϸ����¦��Ƿ�������
  19. {
  20. x1=(-b+gdelta)/(2*a);
  21. x2=(-b-gdelta)/(2*a);
  22. if (x1==floor(x1)&&x2==floor(x2))//�жϽ��Dz�������
  23. {
  24. cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
  25. }
  26. else
  27. {
  28. mum=-b+gdelta;
  29. den=2*a;
  30. for (int j = 2; j<=fabs(mum)&&j<=fabs(den); j++)
  31. {
  32. mum1=mum/j;
  33. den1=den/j;
  34. if (mum1==floor(mum1)&&den1==floor(den1))
  35. {
  36. mum=mum1;den=den1;
  37. j=j-1;
  38. }
  39. }
  40. cout<<"x1="<<mum<<"/"<<den<<endl;
  41. mum=-b-gdelta;
  42. den=2*a;
  43. for (int j = 2; j<=fabs(mum)&&j<=fabs(den); j++)
  44. {
  45. mum1=mum/j;
  46. den1=den/j;
  47. if (mum1==floor(mum1)&&den1==floor(den1))
  48. {
  49. mum=mum1;den=den1;
  50. j=j-1;
  51. }
  52. }
  53. cout<<"x2="<<mum<<"/"<<den<<endl;
  54. }
  55. }
  56. else
  57. {
  58. delta2=delta;
  59. for(int i=2;i<=delta;i++)
  60. {
  61. int cnt=0;
  62. while(delta!=i)
  63. {
  64. if(delta%i==0)
  65. {
  66. cnt++;
  67. delta=delta/i;
  68. delta2=delta2/i;
  69. }
  70. else break;
  71. }
  72. if(i==delta)
  73. {
  74. cnt++;
  75. delta=delta/i;
  76. delta2=delta2/i;
  77. }
  78. if(cnt!=0)
  79. {
  80. if (cnt%2==0)
  81. {
  82. qu=qu*pow(i,cnt/2);
  83. }
  84. if (cnt%2!=0)
  85. {
  86. qu=qu*pow(i,(cnt-1)/2);
  87. delta2=delta2*i;
  88. }
  89. }
  90. }//������
  91. a2=2*a;
  92. for (int j = 2; j<=fabs(a2)&&j<=fabs(b)&&j<=fabs(qu); j++)
  93. {
  94. a21=a2/j;
  95. b1=b/j;
  96. if (qu%j==0&&b1==floor(b1)&&a21==floor(a21))
  97. {
  98. qu=qu/j;a2=a21;b=b1;
  99. j=j-1;
  100. }
  101. }//����
  102. cout<<"x1=("<<-b<<"+"<<qu<<"*sqrt("<<delta2<<"))/"<<a2<<"\nx2=("<<-b<<"-"<<qu<<"*sqrt("<<delta2<<"))/"<<a2<<endl;
  103. }
  104. }
  105. else if (delta>=0)
  106. {
  107. gdelta=sqrt(delta1);
  108. cout<<"delta="<<delta1<<endl;
  109. x1=(-b+gdelta)/(2*a);
  110. x2=(-b-gdelta)/(2*a);
  111. cout<<"x1="<<x1<<"\nx2="<<x2<<endl;
  112. }//�������С���Ļ���������⣨���˼������ޣ�
  113. else
  114. {
  115. cout<<"������ʵ����"<<endl;
  116. }
  117. system("pause");
  118. return 0;
  119. }