zoukankan      html  css  js  c++  java
  • 蓝桥杯a^3 + b^3 = c^3 + d^3

    考虑方程式:a^3 + b^3 = c^3 + d^3

    其中:“^”表示乘方。a、b、c、d是互不相同的小于30的正整数。

    这个方程有很多解。比如:

    a = 1,b=12,c=9,d=10 就是一个解。因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。

    当然,a=12,b=1,c=9,d=10 显然也是解。

    如果不计abcd交换次序的情况,这算同一个解。

    你的任务是:找到所有小于30的不同的正整数解。把a b c d按从小到大排列,用逗号分隔,每个解占用1行。比如,刚才的解输出为:

    1,9,10,12

    不同解间的顺序可以不考虑。

      1 #include <iostream>
      2 #include <cstdlib>
      3 #include <cstring>
      4 #include <algorithm>
      5 using namespace std;
      6 
      7 typedef struct Node
      8 {
      9     int data[4];
     10     Node *next;
     11 }Node,*Nodep;
     12 
     13 int a[30];
     14 int b[4];
     15 
     16 void init()
     17 {
     18     for(int i=1; i<30; i++)
     19         a[i] = i*i*i;
     20 }
     21 
     22 int main()
     23 {
     24     int i,j,k,t;
     25     init();
     26     Nodep head,p,q;
     27     head = new Node;
     28     head->next = NULL;
     29     p = head;
     30     //int cnt = 0;//表示链表里有几个结点 
     31     for(i = 1;i <=29; ++i)
     32     {
     33         for(j = 1;j <=29; ++j)
     34         {
     35             if(i == j) continue;
     36             for(k = 1;k <=29; ++k)
     37             {
     38                 if(i == k || j == k) continue;    
     39                 for(t = 1;t <=29; ++t)
     40                 {
     41                     if(i == t || j == t || k == t) continue;    
     42                     
     43                     if((a[i] + a[j]) == (a[k] +a[t]))
     44                     {
     45                         q = new Node;
     46                         
     47                         q->data[0] = i;
     48                         q->data[1] = j;
     49                         q->data[2] = k;
     50                         q->data[3] = t;
     51                         
     52                         sort(q->data,q->data + 4);
     53                         
     54                         //题目没要求字典序,不过abcd从小到大 排序了,
     55                         //并所以不是原来的顺序 ,所以可以直接对新节点排序而不用再保存原来的 
     56                         bool flag = false;
     57                         //用变量cnt保存结点个数在比较的时候不方便,需要结构体数组
     58                         Nodep phead = head->next;
     59                         int e;
     60                         while(phead) 
     61                         {
     62                             for(e=0; e<4; e++)
     63                             {
     64                                 if(phead->data[e]!=q->data[e])
     65                                     break;//不是continue 
     66                             }
     67                             if(e==4)
     68                             {
     69                                 flag = true;
     70                                 break;
     71                             }
     72                             else
     73                                 phead = phead->next;
     74                             
     75                         }
     76                         if(flag)
     77                         {
     78                             delete q;
     79                             continue;
     80                         }
     81                         //尾插法,每次q->next = NULL;
     82                         
     83                         
     84                         cout<<q->data[0];
     85                         for(int f=1; f<4; f++)
     86                         {
     87                             cout<<","<<q->data[f];
     88                         }
     89                         cout<<endl;
     90                         q->next = NULL;
     91                         p->next = q;
     92                         p = q;   
     93                     }
     94                 }
     95             }
     96         }
     97     }
     98     system("pause");
     99     return 0;
    100 }
  • 相关阅读:
    Windows下MySQL8.0.23的下载与安装简单易用
    【转】decimal double的区别
    【转】.NET垃圾回收
    vs2010 断点调试故障 反编译插件引起的
    【摘】别人对面向对象的理解
    【转】C# indexof
    【转】八大排序算法总结
    【转】JS windows.open()详解
    【转】with as
    【转】SQL Server的几种约束
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3046443.html
Copyright © 2011-2022 走看看