J: Just for fun

时间限制: 1 s      内存限制: 128 MB     
 

题目描述

最近carryon在准备考研复习高数,复习到微分学的时候看到一个求曲面某点的切平面的问题。
现在有一个曲面方程如下:
AX^2 + BY^2 + CZ^2 = D
给一个在曲面上的点(x, y, z);
然后你需要计算出切面方程,并且输出;

a,b,c,d分别为他们的系数
(保证结果一定存在)
输出的格式如:(系数为零的不输出
ax + by + cz + d = 0
输出规定最前面的未知数的参数为正数;

输入

题目要求多组输入!!!
第一行输入四个参数,A, B, C, D;(-10000 <A,B,C,D<10000, 且都不为零);

第二行输入三个参数,x, y, z;(-100 < x,y,z < 100);

输出

ax + by + cz + d = 0

样例输入

1 1 1 14
1 2 3

样例输出

x + 2y + 3z - 14 = 0

高数:解切面方程
1、先求出切面方程的法向量(2ax0,2by0,2cz0);
2、用点法式表示切面方程:2ax0(x-x0)+2by0(y-y0)+2cz0(z-z0)=0
注意几点要求:
1、第一个未知数系数一定为正
2、系数为零的不输出
3、系数为-1和1的未知数不输出1
#include<iostream>
#include<math.h>
#define ll long long
using namespace std;
ll a, b, c, d, x, y, z,A, B, C, temp;
ll gcd(ll a, ll b)
{
return b == ? a : gcd(b, a%b);
}
void check()
{
if(A==)
{
if(B==)
{
if(C<)
C=C*-,d=d*-;
}
if(B<)
B=B*-,C=C*-,d=d*-;
}
if(A<)
A=A*-,B=B*-,C=C*-,d=d*-;
}
int main()
{ while (~scanf("%lld%lld%lld%lld", &a, &b, &c, &d))
{
scanf("%lld%lld%lld", &x, &y, &z);
//ll A, B, C, temp;
A = * x*a, B = * y*b, C = * z*c;
d = A * x*- + B * y*- + C * z*-;
//A = 2 * x*a, B = 2 * y*b, C = 2 * z*c;
temp = gcd(gcd(A, B), gcd(C, d));
A = A / temp, B = B / temp, C = C / temp, d = d / temp;
check();
if(A!=&&A!=&&A!=-)
cout<<A<<'x';
if(A==)
cout<<'x';
if(A==-)
cout<<"-x";
if(B>&&B!=&&B!=-)
cout<<" + "<<B<<'y';
if(B<&&B!=&&B!=-)
cout<<" - "<<-*B<<'y';
if(B==)
cout<<'y';
if(B==-)
cout<<"-y";
if(C>&&C!=&&C!=-)
cout<<" + "<<C<<'z';
if(C<&&C!=&&C!=-)
cout<<" - "<<-*C<<'z';
if(C==)
cout<<'z';
if(C==-)
cout<<"-z";
if(d<)
cout<<" - "<<-*d;
if(d>)
cout<<" + "<<d;
cout<<" = 0"<<endl; }
return ; }
 

J: Just for fun的更多相关文章

  1. 【Java并发编程实战】-----“J.U.C”:CAS操作

    CAS,即Compare and Swap,中文翻译为"比较并交换". 对于JUC包中,CAS理论是实现整个java并发包的基石.从整体来看,concurrent包的实现示意图如下 ...

  2. 【Java并发编程实战】-----“J.U.C”:Exchanger

    前面介绍了三个同步辅助类:CyclicBarrier.Barrier.Phaser,这篇博客介绍最后一个:Exchanger.JDK API是这样介绍的:可以在对中对元素进行配对和交换的线程的同步点. ...

  3. 【Java并发编程实战】-----“J.U.C”:CountDownlatch

    上篇博文([Java并发编程实战]-----"J.U.C":CyclicBarrier)LZ介绍了CyclicBarrier.CyclicBarrier所描述的是"允许一 ...

  4. 【Java并发编程实战】-----“J.U.C”:CyclicBarrier

    在上篇博客([Java并发编程实战]-----"J.U.C":Semaphore)中,LZ介绍了Semaphore,下面LZ介绍CyclicBarrier.在JDK API中是这么 ...

  5. 【Java并发编程实战】-----“J.U.C”:ReentrantReadWriteLock

    ReentrantLock实现了标准的互斥操作,也就是说在某一时刻只有有一个线程持有锁.ReentrantLock采用这种独占的保守锁直接,在一定程度上减低了吞吐量.在这种情况下任何的"读/ ...

  6. JAVA并发编程J.U.C学习总结

    前言 学习了一段时间J.U.C,打算做个小结,个人感觉总结还是非常重要,要不然总感觉知识点零零散散的. 有错误也欢迎指正,大家共同进步: 另外,转载请注明链接,写篇文章不容易啊,http://www. ...

  7. Android Studio解决未识别Java文件(出现红J)问题

    1.问题:java文件出现了红J的问题,正常情况下应该是显示蓝色的C标识. 2.解决方案:切换到project视图下,找到app这个module里的build.gradle,在android结构里插入 ...

  8. //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和

    //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和 # include<stdio.h> void main() { ,sum1; ]={,- ...

  9. 面试题:给定数组a,找到最大的j-i, 使a[j]>a[i]

    第一种方法: 用两重循环对每对点都试一下,然后取最大值即可,时间复杂度为O(n2) #include <iostream> #include <algorithm> using ...

  10. 关于i和j

    算法课无聊随手写了段c代码,发现了个问题,就要下课了,先记一下 for(int i = 0; i < 100; i ++) for(int j = 0; j < 100000; j ++) ...

随机推荐

  1. gitlab centos 安装配置运维笔记

    写在前面 如果你需要一个git服务器,为企业或自己的团队托管代码而又不希望将代码仓库存储到第三方.你可以在自己的服务器上搭建一个gitlab. 本文为我在最初安装配置gitlab服务器的时候留存的笔记 ...

  2. PreparedStatement的setDate方法如何设置日期

    pstmt.setString(12, "to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')");这样写不对,应该如何写 该方法用于将指定的参数设置为 ...

  3. [GO]goexit的使用

    package main import "fmt" func test() { defer fmt.Println("cccccccccccc")//在函数退出 ...

  4. Ajax之XMLHttpRequest

    XMLHttpRequest对象 XMLHttpRequest  提供客户端同http服务器通讯的协议 一:创建 IE : http_request = new ActiveXObject(" ...

  5. kalilinux系统设置

    echo LANG="zh_CN.UTF-8" > /etc/default/locale

  6. opencv常用函数备忘

    //显示图片 IplImage * src = cvLoadImage("xx.JPG"); cvNamedWindow(); cvShowImage("show_ima ...

  7. MapServer:地图发布工具

    MapServer简介:https://baike.baidu.com/item/MapServer

  8. sqpark编译时maven的pom文件内容(org.apachetype.maven.apachetypes:maven.archetypequickstat)

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  9. VC6.0 如何显示代码行号

    VC6.0是一款比较经典.稳定的功能强大的IDE,目前也有很多人在使用.但美中不足的是它不能像其他IDE那样显示行号.这里需要用到一个插件VC6LineNumberAddin, 下载地址:http:/ ...

  10. user profile信息同步问题

    经过下午的远程会议, 该问题已经解决. 以下为小结以及针对AD同步账号的权限配置的要求: 纠正: 1. 将现有的所有User Profile Service Application 删除 2. 执行I ...