求方程解问题

测试你是否和LTC水平一样高

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14886    Accepted Submission(s):
4890

Problem Description

大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上!
你的任务是:
计算方程x^2+y^2+z^2=
num的一个正整数解。

Input

输入数据包含多个测试实例,每个实例占一行,仅仅包含一个小于等于10000的正整数num。

Output

对于每组测试数据,请按照x,y,z递增的顺序输出它的一个最小正整数解,每个实例的输出占一行,题目保证所有测试数据都有解。

Sample Input

3

Sample Output

1 1 1

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5 int main()
 6 {
 7     int x,y,num,i,flag=0,temp;
 8     double z;
 9     while(scanf("%d",&num)!=EOF)
10     {
11         flag=0;
12         for(x=1;x<=sqrt(num);x++)
13         {
14             for(y=1;y<=sqrt(num-x*x);y++)
15             {
16                 temp=num-x*x-y*y;
17                 z=sqrt(temp);        /*求平方根*/
18                 if(abs(z-int(z))<=0.000001&&int(z))        /*判断平方根是否为整数*/
19                 {
20                     printf("%d %d %d\n",x,y,int(z));
21                     flag=1;
22                     break;
23                 }
24             }
25         if(flag)
26             break;
27         }
28     }
29 }
时间: 2024-08-09 02:17:44

求方程解问题的相关文章

求方程解,牛顿迭代和二分

牛顿迭代 #include<iostream> #include<string.h> #include<math.h> using namespace std; float f(float x){ return (pow(x,3)-5*pow(x,2)+16*x+80); } float f1(float x){ return (3*pow(x,2)-5*x+16); } int main(){ // x*x*x-5*x*x+16*x+80; float x=1,x1,

HDU 2199(二分求方程解)

关键是确定解的范围以及二分时的判断依据 这里解的范围已经确定,因为是递增函数,二分依据就是和Y的大小比较 #include"cstdio" #include"cstring" #include"algorithm" #include"cmath" #define MAXN 505 using namespace std; double cal(double x) { double temp=8.0*pow(x,4)+7.0*p

牛顿迭代法求方程的解

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题.迭代法又分为精确迭代和近似迭代."二分法"和"牛顿迭代法"属于近似迭代法.迭代算法是用计算机解决问题的一种基本方法. 利用迭代算法解决问题,需要以下三个步骤: 1.确定迭代变量 在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2.建立迭代关系式 所谓迭代关系式,指如何从变量的前一个值推出其下

c语言:用牛顿迭代法求方程在1.5附近的根:2x^3-4x^2+3x-6=0.

用牛顿迭代法求方程在1.5附近的根:2x^3-4x^2+3x-6=0. 解:牛顿迭代法又叫牛顿切线法.设f =2x^3-4x^2+3x-6,f1为方程的导数,则f1 = 6x^2 - 8x+3,且f1=(f(x0)-0)/(x0-x1),推导得:x1 = x0 - f / f1 程序: #include<stdio.h> #include<math.h> int main() { double x0,x1,f,f1; x1 = 1.5; do { x0 = x1; f = 2*x0

牛顿迭代法 求方程根

牛顿迭代法 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要. 方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根.牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根.复根,此时线性

利用MATLAB求方程y1=3x1+x2+x3,y2=3x1-x2-x3在x1=-2,x2=3,x3=1时的值

求方程y1=3x1+x2+x3,y2=3x1-x2-x3在x1=-2,x2=3,x3=1时的值. 解:打开MATLAB输入如下指令: x1=-2;x2=3;x3=1; >> y1=3*x1+x2+x3 y1 = -2 >> y2=3*x1-x2-x3 y2 = -10

【Hack!】bzoj2850 TLE &amp;&amp; 求正解

题目及题解传送门 然而今天在做另一道题时回想起了这道题,发现时间复杂度并不能证明为$O(n\log n)$或$O(n\sqrt n)$. 然后仔细一想竟然发现时间复杂度是$O(n^2)$的?! 该题题解为KD-tree,然而事实上这样分割矩形的方法是非常不科学的,于是出了一组数据卡掉了它. 原题中要求的是ax+by<c的,即在ax+by-c=0这条直线以下的所有点的权值之和.那么只要让直线穿过所有矩形即可. 然后有了右图的思路: 这样建树的中序遍历就是从左下到右上的顺序,而这里面任意两个点构成的

不求甚解与求甚解的阶段区分

前几日砍瓜切菜般搭建了一个简单的网站,之后便进入一段目标迷茫期,同时也深知自己立足未稳,基础未牢:往前走又有诸多岔路口,毫无疑问会分散自己本就不多的精力. 我是继续不求甚解地走下去:用同样的手法搞定CSS.JAVASCRIPT等等或是退回去,求甚解Python和Django? 其实不冲突,前提是你要知道自己内心惶恐的原因并且解决. 知此,你才能够明辨何时不求甚解,何时求甚解. 版权声明:本文为博主原创文章,未经博主允许不得转载.

【C语言】求方程ax^2+bx+c=0的根

//求方程ax^2+bx+c=0的根 #include <stdio.h> #include <math.h> int main() { float a,b,c,dis,x1,x2; printf("请输入a,b,c的值: "); scanf("%f %f %f",&a,&b,&c); dis=b*b-4*a*c; if(dis<0) { printf("该函数无实根.\n"); return